为什么在 Java TreeMap 中调用 iterator.remove() 时,相同的 Map.Entry 会发生变化?
2022-09-02 03:59:51
当我用来迭代一些时,我发现相同的内容会改变。例如:Iterator
TreeMap
Map.Entry
import java.util.Map.Entry;
import java.util.TreeMap;
public class Solution {
public static void main(String[] args) {
TreeMap<Integer, Integer> map = new TreeMap<>();
map.put(1,1);
map.put(2,2);
map.put(3,3);
System.out.println("map: " + map);
Map<Integer, Integer> fromMap = map.tailMap(2);
System.out.println("fromMap: " + fromMap);
Iterator<Entry<Integer, Integer>> iter = fromMap.entrySet().iterator();
Entry<Integer, Integer> entry = iter.next();
System.out.println(entry); // line 1
iter.remove();
System.out.println(entry); // line 2. Why does entry content change?
}
}
结果:
map: {1=1, 2=2, 3=3}
fromMap: {2=2, 3=3}
2=2
3=3
上述代码的第 1 行和第 2 行具有相同的引用,但是当我调用 时内容会发生变化。entry
iter.remove()