【发布时间】:2016-03-15 03:26:15
【问题描述】:
我写了一些有效的代码,但我不确定。考虑
LinkedList<Iterator<Integer>> iterators;
HashMap<Character, TreeSet<Integer>> map;
for (char c : map.keySet()) {
iterators.add(map.get(c).iterator());
map.remove(c);
}
即使原始 TreeSet 已被删除,迭代器似乎也能正常工作(即按照 TreeSet 的原始顺序)。我不太明白为什么它是功能性的——似乎这里有按值传递而不是按引用传递。但是,显然,如果我要写
map.get(c).add(6);
TreeSet 实际上会在映射中添加 6(不仅仅是在映射中的 TreeSet 的副本中添加 6),表明 get 是通过引用传递的。有人可以帮助解决这里的困惑吗?
【问题讨论】:
-
来自
TreeSet的Iterator与HashMap有什么关系?
标签: java iterator pass-by-value