HashMap überschreibt Daten von anderen HashMap

Fawkes

Mitglied
Hallo,
ich habe ein kleines Problem mit einer HashMap.

Ich habe eine "Haupt HashMap", die als Parameter einer anderen Methode (Methode 2) übergeben wird um in dieser anderen Methode zu Testen ob sich an bestimmten Stellen schon Werte befinden oder nicht. Eigentlich war es so gedacht, dass die HashMap in Methode 2 nur zum Testen verwendet wird und anschließend nicht weiterverwendet, mein Problem dabei ist aber, dass wen ich jetzt die HashMap aus Methode 2 fülle, die selben Werte auch in die HashMap von Methode 1 eingefügt wird.

Kleines Bsp.
Java:
public void methode1()
{
HashMap<Int,Int> map1 = new HashMap<Int,Int>;
map1.put(1,1);
map1.put(2,2);
isConflict(map1)
}


public void isConflict(HashMap<Int,Int> map2)
{
for(int i=1;i<5;i++)
{
map2.put(i,i);
}
}

Eigentlich sollte in map1 jetzt (1,1) (2,2) und in map2 (1,1)(2,2)(3,3)(4,4) stehen, das Problem ist aber dass in Beiden (1,1)(2,2)(3,3)(4,4) steht. Weiß jemand woran das liegen könnte?

Grüße
Fawkes
 
In Java gibt's kein "call by reference".

Wenn man davon absieht, dass der Code nicht komplierbar ist, wird ja der Methode isConflict(...) die Map übergeben und in diese Instanz weitere Werte eingefügt. map1 und map2 referenzieren schliesslich auf dasselbe Object.
 
Deswegen die Anführungszeichen. Die Referenz bleibt erhalten, im Speicher befindet sich nur eine Map und deren Felder werden gefüllt.
 
Wollte es auch nur klarstellen, da es bei Java Anfängern oft zu Verwirrungen kommt. Genauso wie bei primitiven Werten werden auch Referenzen in Kopie übergeben.
 

Zurück
Oben