ConcurrentModificationException并发修改异常
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class ListTest {
public static void main(String[] args) {
Collection col = new ArrayList();
//集合只能存储引用数据类型,那这里为什么可以存基本数据类型,因为集合在此处将基本数据类型自动装箱
col.add(1);
col.add(2);
col.add(3);
col.add(5);
//集合引用调用自己的迭代器
Iterator iterator = col.iterator();
while(iterator.hasNext()){
//注意这句的重要性,不分开写的话不会出现我想看到的错误
Object obj = iterator.next();
//这里记得加双引号
if(obj.toString().equals("3")){
col.add(4);
}
System.out.println(obj.toString());
}
}
}
运行结果,

在进行list列表元素迭代的时候,如果想要在迭代过程中,想要对元素进行操作的时候,比如满足条件添加新元素,就会发生 ConcurrentModificationException 并发修改异常。
导致的原因是:
集合引用和迭代引用在同时操作元素,通过集合获取到对应的迭代器后,在迭代中,进行集合引用的元素的添加,迭代器
并不知道,所以会出现异常情况。
解决办法:在迭代器中对元素进行操作,找迭代器的方法最为合适,可是Iterator中只有hasNext(),next(),remove()方法
,通过查阅的它的子接口,ListIterator,发现该列表迭代器接口具备了对元素的增删改查的动作。
浙公网安备 33010602011771号