迭代树形图的值并通过此迭代器删除它们是否会修改树状图?



假设我有一个像这样的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操作。

最新更新