繁体   English   中英

在迭代HashMap的值时删除它安全吗?

[英]Is it safe to delete HashMap's entry when iterating over its values?

假设我知道密钥,可以在迭代时将其删除

for (ExampleClass e : map.values()) {
    if (condition) {
        map.remove(key);
    }
}

我发现了一个相关的问题( 遍历和从地图中删除 ),但是它假定我们正在遍历键集。 设定值是否相同?

HashMap javadoc中

由此类的所有“集合视图方法”返回的迭代器都是快速失败的:如果在创建迭代器后的任何时候以任何方式对映射进行结构修改,则除了通过迭代器自己的remove方法之外,迭代器都会抛出ConcurrentModificationException

因此,您不能使用map.remove(key)

从javadoc中获取HashMap#values()

集合支持元素删除,该元素通过Iterator.remove,Collection.remove,removeAll,retainAll和clear操作从映射中删除相应的映射。

因此,您可以使用Iterator#remove()从值集中删除条目。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM