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);
}
サイクル内のオブジェクトに対する変更は、マップ内の同じオブジェクトで行われますか?Java:HashMapクラスのこのメソッドの意味は?
ガイドでは、このマップに含まれる値のコレクションビューを返します
values()
方法
についてはこれを言います。コレクションはマップによってサポートされているため、マップの変更はコレクションに反映され、その逆もあります。
"マップの変更"は "マップされたオブジェクトの変更"を意味しますか?だからこの方法でsetField
メソッドはマップ内のオブジェクトを変更できますか?
これは正しいです。それを試してみてください。 – hexafraction
はい、地図に実際のオブジェクトへのポインタが含まれているのを見ると、 'values()'メソッドを使うときに同じポインタが得られ、メモリ内の全く同じオブジェクトを操作します。 – ToVine
いいえ。つまり、マッピングを変更した場合、つまり、追加、削除、変更したキーと値のペアは、返されたコレクションに表示されます。 –