假设我有一个像这样的TreeMap:
TreeMap<K, V> map = ...
map.put(key, val)
然后我做以下操作:
Iterator<K> iter = map.values().iterator();
while(iter.hasNext()) {
iter.next();
iter.remove();
}
执行此代码后,map.get(key)
是null
还是等于val
?
您可以尝试一下。.
但是,通过迭代器移除值会影响原始集合。否则没有多大用处,是吗?
来自文档:
返回此映射中包含的值的"集合"视图。集合的迭代器按相应键的升序返回值。集合由地图支持,因此对地图的更改会反映在集合中,反之亦然。如果在对集合进行迭代时修改了映射(迭代器自己的移除操作除外),则迭代的结果是未定义的。
该集合支持元素移除,通过Iterator.remove、collection.remove,removeAll、retainAll和clear操作从映射中移除相应的映射。它不支持add或addAll操作。