我是靠谱客的博主 贪玩果汁,最近开发中收集的这篇文章主要介绍解决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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部