HashMap in HashMap, klappt nicht, Verständnisproblem

henni ko

Neues Mitglied
Hallo,
ich versuche eine verschachtelte (2D) HashMap zu bauen. Eine HashMap deren Values selbst HashMaps sind.

Java:
 HashMap<Integer, HashMap<Integer,String>>

Ich will eine Reihe HashMaps in einer übergeordneten HashMap speichern und abrufen.
Keys sind stets Integer, Values String oder HashMap.

Ich versuchs genau zu beschreiben.

Dieses Testschema soll aufgebaut werden.

200: // Zeile Key 200
-> 0: "111", 1:"AAA" // Spalte 0 und Spalte 1
201: // Zeile Key 200
-> 0: "222", 1:"BBB" // Spalte 0 und Spalte 1

Ich habe folgenden Testcode erstellt.
Code:
        // Haupt-HashMap 
        HashMap<Integer, HashMap<Integer,String>> dataRowHM = new HashMap<Integer, HashMap<Integer, String>>();
        
        // Hilfs HashMap
        HashMap<Integer,String> row = new HashMap<Integer,String>();

        
        // Aufbau Zeile Key 200
        row.put(0, "111");
        row.put(1, "AAA");
        
        System.out.println( "row="+row.toString() );
        System.out.println( "dataRowHM="+dataRowHM.toString() );
        dataRowHM.put(200,  row );  // Einfügen Zeile Key 200
        System.out.println( "dataRowHM="+dataRowHM.toString() );
        
        System.out.println( "" ); // ----------------------- 
        
        // Aufbau Zeile Key 201
        row.put(0, "222");
        row.put(1, "BBB");
        
        System.out.println( "row="+row.toString() );
        System.out.println( "dataRowHM="+dataRowHM.toString() );
        dataRowHM.put(201,  row );  // Einfügen Zeile Key 201
        System.out.println( "dataRowHM="+dataRowHM.toString() );

Wenn ich laufen lasse kommen folgende Meldungen.

Code:
row={0=111, 1=AAA}
dataRowHM={}
dataRowHM={200={0=111, 1=AAA}}

row={0=222, 1=BBB}
dataRowHM={200={0=222, 1=BBB}}
dataRowHM={200={0=222, 1=BBB}, 201={0=222, 1=BBB}}

Im ersten Block ist noch wie erwartet.
Nachdem ich Zeile 201 hinzugefügt habe ist Zeile 200 (111,AAA) überschrieben durch Zeile 201 (222,BBB). Da steht jetzt 2x (222,BBB)

Code:
Erwartetes Ergebnis
dataRowHM={200={0=111, 1=AAA}, 201={0=222, 1=BBB}}

Tatsächliches Ergebnis (s.o.)
dataRowHM={200={0=222, 1=BBB}, 201={0=222, 1=BBB}}

Was hab ich falsch gemacht? Falsch verstanden?
Oder geh ich da total falsch heran? Hat jemand einen Tip für mich?


Gruß
Hen
 
Mir ging auch grad'n Licht auf. Du warst schneller. 🙂

Zeile 15 eingefügt. Jetzt fluppts.

Danke. Und schön daß wir drüber geredet haben. 🙂

Gruß
Hen

Java:
        HashMap<Integer, HashMap<Integer,String>> dataRowHM = new HashMap<Integer, HashMap<Integer, String>>();
        
        HashMap<Integer,String> row = new HashMap<Integer,String>();

        
        row.put(0, "111");
        row.put(1, "AAA");
        
        System.out.println( "row="+row.toString() );
        System.out.println( "dataRowHM="+dataRowHM.toString() );
        dataRowHM.put(200,  row );
        System.out.println( "dataRowHM="+dataRowHM.toString() );
        

        row = new HashMap<Integer,String>();
        row.put(0, "222");
        row.put(1, "BBB");
        
        System.out.println( "" );
        
        System.out.println( "row="+row.toString() );
        System.out.println( "dataRowHM="+dataRowHM.toString() );
        dataRowHM.put(201,  row );
        System.out.println( "dataRowHM="+dataRowHM.toString() );







row={0=111, 1=AAA}
dataRowHM={}
dataRowHM={200={0=111, 1=AAA}}

row={0=222, 1=BBB}
dataRowHM={200={0=111, 1=AAA}}
dataRowHM={200={0=111, 1=AAA}, 201={0=222, 1=BBB}}
 

Zurück
Oben