gpt4 book ai didi

Java并发修改错误HashMap

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:03:52 24 4
gpt4 key购买 nike

有趣的问题。为什么第一个版本会抛出并发修改错误,而第二个版本不会。这应该发生吗?

Map<String,Integer> map = new HashMap<>();    
... // Populate the map
for(String key : map.keySet()){
if(map.get(key) < 50){
map.remove(key);
}
}

Map<String,Integer> map = new HashMap<>();
... // Populate the map
for(String key : new ArrayList<String>(map.keySet())){
if(map.get(key) < 50){
map.remove(key);
}
}

最佳答案

第一个示例抛出异常,因为您在遍历 map 时修改了 map 。这是预期的。

在第二个示例中,您创建了一个包含 map 中所有字符串的 ArrayList。在这里你遍历了新创建的 ArrayList,所以你的第二个例子不会抛出一个例子,因为你遍历了 ArrayList,而不是 map

关于Java并发修改错误HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43129392/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com