BZ易风

导航

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

 

posted on 2019-04-21 15:00  BZ易风  阅读(166)  评论(0编辑  收藏  举报