Auf Thema antworten

Hallo,

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


[CODE=java] HashMap<Integer, HashMap<Integer,String>>[/CODE]


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() );

[/CODE]


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

[/CODE]


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

[/CODE]


Was hab ich falsch gemacht? Falsch verstanden?

Oder geh ich da total falsch heran? Hat jemand einen Tip für mich?



Gruß

Hen



Oben