class MyObject {
int field;
public void setField(int arg1) {
this.field = arg1;
}
}
HashMap<String, MyObject> map;
...
... // put some MyObjects in the map with strings as keys
...
for (MyObject object : map.values()) {
object.setField(12345);
}
Die Änderungen, die ich an Objekten innerhalb des Zyklus vorgenommen habe, werden an denselben Objekten in der Karte vorgenommen.Java: Was bedeutet diese Methode der Klasse HashMap?
Der Führer sagt dies über die values()
Methode
Gibt eine Sammlung Blick auf die in dieser Karte enthaltenen Werte. Die Sammlung wird von der Karte unterstützt, sodass Änderungen an der Karte in der Sammlung widergespiegelt werden und umgekehrt.
Bedeutet "Änderungen an der Karte" "Änderungen an den gemappten Objekten"? Auf diese Weise kann die setField
Methode die Objekte in der Karte ändern?
Das ist richtig. Probieren Sie es aus und sehen Sie. – hexafraction
Ja, da die Karte tatsächlich Zeiger auf die realen Objekte enthält, erhalten Sie die gleichen Zeiger, wenn Sie die Methode 'values ()' verwenden, und Sie manipulieren daher exakt dieselben Objekte im Speicher. – ToVine
Nein. Dies bedeutet, dass wenn Sie die Zuordnungen ändern, dh. Hinzufügen, Entfernen, Ändern von Schlüssel-Wert-Paaren, diese Änderungen sind in der zurückgegebenen Sammlung sichtbar. –