2017-01-03 3 views
1

Я хочу поставить массив int и String в HashMap. Это возможно? Каков правильный путь к этому?Хранение нескольких типов данных в одном HashMap

Это мой HashMap:

Map<String, String> stringMap = new HashMap<>(); 

    stringMap.put("Text","fish"); 
    stringMap.put("Diet","false"); 
    stringMap.put("CookingTime", "60"); 
    stringMap.put("OptionId", [7,8,8]); 

Я знаю, что эта линия не так - как я могу хранить массив в HashMap?

stringMap.put("OptionId", [7,8,8]); 
+1

Потому что это не синтаксис, чтобы объявить массив. –

+2

Hello You Put Этот массив как String как «7,8,8», а затем преобразовать эту строку в массив с помощью String OptionId = "7,8,81" String [] yourArray = date.split ("[,] «); –

+0

Я знаю, как я спросил, я хочу знать, как помещать массив int вместе со строками в HashMap. – tahaDev

ответ

2

Вы можете создать экземпляр массива в Java, делая

someMap.put("OptionId", new int[]{7,8,8}); 

В противном случае вам будет нужна функция, которая возвращает эти значения в массиве.

В вашем случае: если вы хотите создать HashMap нескольких типов данных можно использовать

HashMap<String, Object> map = new HashMap<String, Object>(); 

Вы можете положить все, что вы хотите в

map.put("key1", "A String"); 
map.put("key2", new int[]{7,8,8}); 
map.put("key3", 123); 

Только теперь сложная часть вы не знаю, что вам нужно, чтобы использовать instanceof, чтобы разобрать карту, если вы не знаете, какой тип объекта находится у ключа, тогда вы можете просто cast его к этому типу.

if(map.get("key1") instanceof String) 
    String s = (String) map.get("key1"); // s = "A String" 

или

int[] arr = (int[]) map.get("key2"); // arr = {7,8,8} 
Смежные вопросы