我是靠谱客的博主 贪玩果汁,这篇文章主要介绍解决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内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部