这有点像这个问题的重复,但是我正在寻找更多关于答案中“可变键”和“桶”的 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;
}