我是靠谱客的博主 贪玩果汁,最近开发中收集的这篇文章主要介绍解决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.util.ConcurrentModificationException:null所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复