MEGA komisches entrySet() Phänomen

Status
Nicht offen für weitere Antworten.

sowieso3

Neues Mitglied
Hallo !

Ich fall hier gerade vom Hocker. Ich hab hier ein Phänomen, dass ich mir absolut nicht erklären kann !!

Code:
HashMap <String,Integer> bla = reader.map;			
			Set <Map.Entry <String,Integer>> entrySet = bla.entrySet();
			entrySet.clear();
			System.out.println(reader.map);
die "map" der Klasse "reader" ist eine HashMap. Nun erstelle ich anfangs eine Kopie "bla" der "map". Anschließend erzeuge ich eine view "entrySet" und cleare diese. Gut damit wird auch "bla" gecleared, weil entrySet() eine view ist. aber das System.out.println() bezeugt, dass mit dem clear() auch die reader.map gecleared wird. (nur wenn da entrySet.clear() steht, wird "{ }" ausgegeben.

WIE GEHT DAS DENN ???? :shock: ich hab die reader.map doch gar nicht gecleared ??!!


Kann jemand mir dieses Phänomen erklären ??
 

@x.l

Bekanntes Mitglied
du hast dir doch keine kopie erzeugt, sondern bla hält nun einer Referenz auf reader.map, d.h. clearst du bla - dann clearst du auch reader.map

du kannst eine kopie mit clone() anlegen
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben