ConcurrentModificationException并发修改异常

时间:2021-11-29 03:28:04
//创建集合对象
Collection c = new ArrayList();
c.add("hello");
c.add("world");
c.add("java"); Iterator it = c.iterator();
while(it.hasNext()){
String s = (String)it.next();
if(s.equals("java")){
c.add("android");//报错 并发异常
}
}

迭代器是依赖于集合的,相当于集合的一个副本,当迭代器在操作的时候,如果发现和集合不一样,就会抛出异常

解决方案:

     在使用迭代器进行遍历的时候使用迭代器来修改,不使用集合修改

//使用List创建集合对象
List c = new ArrayList();
c.add("hello");
c.add("world");
c.add("java"): ListIterator lit = c.listIterator();
while(lit.hasNext()){
String s = (String)lit.next();
if(s.equals("java")){
lit.add("android");//注,此处不要用集合c添加,要用迭代对象lit添加,它就会去同步集合
}
} System.out.println(c);//[hello,world,java,android]