我是靠谱客的博主 贪玩果汁,这篇文章主要介绍解决HashMap迭代时报错java.util.ConcurrentModificationException:null,现在分享给大家,希望可以做个参考。
场景:
在HashMap集合迭代时进行删除操作
报错:
java.util.ConcurrentModificationException:null
原因:
HashMap里面有个成员属性modCount,用于记录map被修改的次数(当map被put或者remove时++).
而当我们使用迭代器Iterator对map进行遍历的时候,在迭代器创建的时候就将modCount赋予给了迭代器里面expectedModCount。
map.remove()时只会修改modCount++,expectedModCount不变.
因此在下一次迭代器执行next()方法的时候 ,就会因为modeCount和expectedModCount这两个不一致而抛出错误。
解决:
使用迭代器对数据进行删除。
Set<Map.Entry<String, List<Integer>>> entries = tmpMap.entrySet();
if(CollectionUtils.isNotEmpty(entries)){
Iterator<Map.Entry<String, List<Integer>>> itr = entries.iterator();
while (itr.hasNext()) {
Map.Entry<String, List<Integer>> entry = itr.next();
if(null != entry){
itr.remove();
}
}
}
最后
以上就是贪玩果汁最近收集整理的关于解决HashMap迭代时报错java.util.ConcurrentModificationException:null的全部内容,更多相关解决HashMap迭代时报错java内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复