Ich habe versucht, eine Liste von Karten zu erstellen. Im folgenden Code erwarte ich,
zu erhalten %Vor%aber ich habe nur
%Vor%Wie vermeide ich das Überschreiben der ersten Karte? Hier ist mein Code:
%Vor%Danke!
=========================
Als Java-Lerner, der aus dem SAS-Prozess stammte, habe ich einige Stunden damit verbracht, ArrayList, LinkedList, Map, LinkedMap usw. zu lernen und zu experimentieren - ich kann es nicht zum Laufen bringen. Und ich verstehe nicht warum mit meinem begrenzten Wissen. Nun, diese folgenden Antworten sind alle exzellent! Sie haben eine sehr wichtige Datenstruktur in Java erklärt, zumindest für mich.
DANKE ALLES !!!!
Sie müssen für jeden Eintrag eine neue HashMap erstellen, anstatt die vorhandene zu verwenden. Das würde funktionieren:
%Vor% Sie können auch die list.add(new HashMap());
entfernen, da diese Ihrer Liste eine leere Map hinzufügt, die niemals ausgefüllt wird.
Etwas, das vielleicht auch erwähnenswert ist, ist, dass Sie den Typ der Elemente definieren sollten, die Sie in der Liste verwenden, da die HashMap nicht möglich ist, weil Sie Ganzzahlen
Und noch etwas: Sie sollten die List -Schnittstelle als Typ verwenden, damit Sie die Implementierung ( ArrayList oder was auch immer) in der Zukunft ändern können.
Hier der korrigierte Code:
%Vor%Ja, Hash-Karte von diesem Codeabschnitt
%Vor%wird nie referenziert. So erhältst du schließlich eine Liste von 3 Gegenständen, von denen jedoch 2 identisch sind.
hat drei Zusätze zur Liste. das erste Add ist einer neuen Karteninstanz; Du hast keine Werte festgelegt. Die zweite addieren Sie in einem Verweis auf nMap, die 1 hat, ja. Die dritte fügen Sie die gleiche Referenz. Also hat die Map jetzt 3 Referenzen, die erste auf eine Karte, der du noch nie Werte hinzugefügt hast, die nächste 2 auf die gleiche Karte. Deshalb erhalten Sie die gleiche Ausgabe.