我是靠谱客的博主 害怕指甲油,最近开发中收集的这篇文章主要介绍java.util.ConcurrentModificationException解决办法,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
这个问题发生在我前几天写代码的时候,但是我需要对ArrayList中的数据进行过滤,将一部分符合条件的实体对象从ArrayList中去除,然后再对ArrayList中的数据进行使用或其他操作。
但是我不加思考的在循环中使用了list.remove(Object o)的方式来去除实体对象,结果爆了java.util.ConcurrentModificationException异常,参考代码如下:
for(Contact contact : list){
if(contact.getName().equals(people)){
list.remove(contact);
}
}
细想之后,觉得确实不能这么干,在循环中进行删除,那么下一次循环时候ArrayList已经变化,循环将无法进行下去,这是非常糟糕的,当时我想到的解决办法是将符合条件的实体对象contact全部放入一个新的List<Contact>,但是然后在循环结束之后使用list.removeall(newlist);的方法来排除掉符合条件的contact,此时list中的数据才是我需要的。
后来我在浏览了一些博客之后,又有了一个新的想法来实现这个功能,代码如下:
for(Iterator it = list.iterator(); it.hasNext();){
Contact contact = (Contact) it.next();
if(contact.getName().equals(people)){
it.remove();
}
}
通过迭代器本身的remove方法即可马上删除符合条件的contact。
好了,这就是我对这个异常的认识和解决办法,如果大家有更好的见解和解决办法,欢迎留言,谢谢~
最后
以上就是害怕指甲油为你收集整理的java.util.ConcurrentModificationException解决办法的全部内容,希望文章能够帮你解决java.util.ConcurrentModificationException解决办法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复