2013-08-24 7 views
5

Ich versuche, eine Liste der Schlüssel-Wert-Paare zu erstellen. Hier ist, was ich bisher:Erstellen Sie eine Liste der Schlüsselwertobjekte

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

Das gibt mir die folgende Fehlermeldung:

Type mismatch: cannot convert from String to Map

Auch, wie würde ich durch diese durchlaufen? Vielen Dank!

Antwort

12

Wenn Sie put auf der Karte des Typs Map <Integer,String> aufrufen, erhalten Sie die Zeichenfolge zurückgegeben. Also, wenn Sie dies tun:

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

es wird wieder ein String

und wenn Sie versuchen, es zuweisen zu einer Karte

Map<Integer,String> map 

Compiler einen Fehler wirft,

Type mismatch: cannot convert from String to Map

Hier ist die Signatur der Put-Methode Formular javadocs:

public V put(K key, 
      V value) 

müssen Sie die diese komplexe problematische Anweisung brechen:

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

zu so etwas wie:

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

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

Vielen Dank für das Problem zu lösen und es Schritt für Schritt zu erklären. Ich war mit den zwei Schritten anfangs verwirrt, als ich es auf einer anderen Frage sah. –

+0

Sie können anonyme innere Klassen bei Bedarf auch ausnutzen. Aber ich habe gehört, dass sich nicht jeder mit ihnen wohl fühlt. – dans3itz

0

Die Antwort auf diesen Thread: Java HashMap associative multi dimensional array can not create or add elements

hat ein Beispiel dafür, wie dies zu tun ist.

+1

Ehrlich gesagt bin ich mir nicht sicher, wie sich Ihre Antwort auf die Frage bezieht. (Ich habe nie gewählt btw) –

+0

Es bezieht sich auf die Frage, weil es ein Beispiel enthält, wie man dieses Problem löst. Das Beispiel zeigt, wie Sie eine HashMap erstellen und mehrere Schlüssel/Wert-Paare einfügen. –

+1

Ich habe auch nicht darüber abgestimmt (nur upvoted), aber diese Seite hatte viele Informationen, danke! Ich habe viele ähnliche Seiten gesehen, aber diese verpasst. Bearbeite meinen ersten Beitrag mit Antwort. –