2013-08-24 4 views
5

Я пытаюсь создать список пар ключ-значение. Вот то, что я до сих пор:Создайте список объектов с ключом

Map<Integer,String> map = new HashMap<Integer,String>().put(songID, songList.get(i).name); 

Это дает мне следующее сообщение об ошибке:

Type mismatch: cannot convert from String to Map

Кроме того, как бы я перебирать эти? Благодаря!

ответ

12

Когда вы звоните put на карте типа Map <Integer,String>, вы получите возвращаемую строку. Так что, когда вы это делаете:

new HashMap<Integer,String>().put(songID, songList.get(i).name); 

будет возвращать String

и при попытке назначить его на карте

Map<Integer,String> map 

компилятор выдает ошибку,

Type mismatch: cannot convert from String to Map

Вот подпись формы метода put javadocs:

public V put(K key, 
      V value) 

вам нужно, чтобы сломать эту сложную проблемную заявление:

Map<Integer,String> map = new HashMap<Integer,String>().put(songID, songList.get(i).name); 

к чему-то вроде:

Map<Integer,String> map = new HashMap<Integer,String>(); 

map.put(songID, songList.get(i).name); 
+1

Благодарим вас за нарушение проблемы и объяснение ее шаг за шагом. Сначала я был замешан в двух шагах, когда увидел это по другому вопросу. –

+0

Вы также можете использовать анонимные внутренние классы, когда вам нужно. Но я слышу, что им не все нравится. – dans3itz

0

ответ на эту тему: Java HashMap associative multi dimensional array can not create or add elements

имеет пример того, как это сделать.

+1

Честно говоря, я не уверен, как ваш ответ относится к вопросу. (Я никогда не голосовал против) –

+0

Это относится к вопросу, потому что в нем содержится пример того, как решить эту проблему. В этом примере показано, как создать HashMap и поместить в него несколько пар ключ-значение. –

+1

Я тоже не проголосовал за это (просто поддержал), но на этой странице было много информации, спасибо! Я видел много похожих страниц, но пропустил это. Будет отредактировать мой начальный пост с ответом. –

Смежные вопросы