Hallo,
ich versuche eine verschachtelte (2D) HashMap zu bauen. Eine HashMap deren Values selbst HashMaps sind.
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.
Wenn ich laufen lasse kommen folgende Meldungen.
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)
Was hab ich falsch gemacht? Falsch verstanden?
Oder geh ich da total falsch heran? Hat jemand einen Tip für mich?
Gruß
Hen
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