java.util.ConcurrentModificationException
02-23 12:11:32.871 11986-11986/com.rosevision.ofashion E/AndroidRuntime: at java.util.ArrayList$ArrayListIterator.next(ArrayList.java:573)
今天在项目开发过程中遇到这个错,网上查了一下,产生这个错误的原因是在使用Iterator来迭代遍历List的时候如果修改该List对象,则会报java.util.ConcurrentModificationException异常。
下面是报错时的代码:
for (MainFollowBrandParam param : followBrandParamList) {
if (param.getBrand_id().equals(item.getBid())) {
followBrandParamList.remove(param);
} else {
followBrandParamList.add(new MainFollowBrandParam(item.getBid(), item.getIs_favorite()));
}
}
产生问题的原因知道了,那么要解决它就容易多了,我采用的方法是每次在遍历这个list的之前先将它复制一次,然后在复制后的list中做增删操作,最后再将这个List赋值给原来的List, 下面是更改后的代码
ArrayList<MainFollowBrandParam> params = new ArrayList<>();
params.addAll(followBrandParamList);
for (MainFollowBrandParam param : followBrandParamList) {
if (param.getBrand_id().equals(item.getBid())) {
params.remove(param);
} else {
params.add(new MainFollowBrandParam(item.getBid(), item.getIs_favorite()));
}
}
followBrandParamList.clear();
followBrandParamList.addAll(params);
更改之后,问题解决。。
分享到:
相关推荐
java.util.ConcurrentModificationException 异常问题详解1
java.util.ConcurrentModificationException 解决方法 在使用iterator.hasNext()操作迭代器的时候,如果此时迭代的对象发生改变,比如插入了新数据,或者有数据被删除。 则使用会报以下异常: Java.util....
主要介绍了出现java.util.ConcurrentModificationException 问题及解决办法的相关资料,需要的朋友可以参考下
Spring数据mongodb测试 在Collections.synchronizedList或Collections.synchronizedSet上测试spring数据mongodb ConcurrentModificationException
java.util.ConcurrentModificationException: mutation occurred during iteration [error] scala.collection.mutable.MutationTracker$.checkMutations(MutationTracker.scala:43) [error] scala.collection....
java中,List在遍历的时候,如果被修改了会抛出java.util.ConcurrentModificationException错误。 看如下代码: import java.util.ArrayList; import java.util.List; public class Resource3 { public ...
Map在遍历时候通常 现获得其键值的集合Set,然后用迭代器Iterator来对Map进行遍历。
简述synchronized和java.util.concurrent.locks.Lock的异同 ? 34.EJB规范规定EJB中禁止的操作有哪些? 35.java除了8种基本类型外,在虚拟机里还有哪一种,有什么作用? 36.除了使用new关键字创建对象意外,试列举...
JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用...
超级有影响力的Java面试题大全文档 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。...