//创建集合对象 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]