Java: Erstellen Sie eine Liste von HashMaps

8

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 !!!!

    
john 04.11.2010, 19:29
quelle

5 Antworten

28

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.

    
Luke Hutteman 04.11.2010, 19:32
quelle
5

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 Strings .

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%     
Prine 04.11.2010 19:43
quelle
1

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.

    
Denis Kniazhev 04.11.2010 19:36
quelle
0

Sie speichern niemals einen Verweis auf diese Karte:

%Vor%     
Peter Knego 04.11.2010 19:33
quelle
0

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.

    
hvgotcodes 04.11.2010 19:33
quelle

Tags und Links