これはこの質問の複製のようなものですが、回答の「変更可能なキー」と「バケット」のELI5の説明をもう少し探しています。
ここに私が理解に苦しんでいる私のコードがあります:
HashSet<Object> set = new HashSet<Object>();
set.add(1); set.add(2); set.add(3);
for(Object i : set)
if(i.equals(1)) {
i = 1337;
System.out.println("FOUND");
}
for(Object i : set) System.out.println(i);
出力:
FOUND
1
2
3
代わりに 1337, 2, 3 が出力されないのはなぜですか?
同じ質問がオブジェクトの削除にも当てはまります。
編集:
これは私が望むことを行いますが、正しい方法ではないことはかなり確信しています:
for(Object i : set)
if(i.equals(1)) {
set.remove(i);
set.add(1337);
break;
}