美文网首页
并发修改异常

并发修改异常

作者: 卓昂芭比 | 来源:发表于2019-03-11 17:24 被阅读0次

    案例:判断集合中是否存在java,如果有则添加android且遍历集合元素

    方法一:使用collection集合中的contains()方法判断

    * Collection c=new ArrayList();

    c.add("java");

    c.add("helloworld");

    if(c.contains("java")){

    c.add("android");

    }

    Iterator it=c.iterator();

    while(it.hasNext()){

    System.out.println(it.next());

    }

    }

    }

    方法二:利用迭代器对象进行遍历,比较是否存在...

    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("andriod");

    }

    }

    System.out.println(c); 

    }

    }

    并发修改异常java.util.ConcurrentModificationException

    *原理:迭代器是依赖于集合的,相当于集合中的一个副本,当迭代器在操作的时候,如果发现和集合不一样(元素个数等),则抛出异常。

    *解决方法:在迭代器遍历时,使用迭代器去修改 

    *子类List.ListIterator();List是Collection集合的子体系 

    *通过ListIterator迭代器对象,遍历来获取集合中的每一个元素

    import java.util.List;

    import java.util.ListIterator;

    //判断集合中是否存在java,如果有则添加android且遍历集合元素

    public class CollectionDemo {

    public static void main(String[] args) {

    List list=new ArrayList();

    list.add("hello");

    list.add("world");

    list.add("java");

    ListIterator it=list.listIterator();

    while(it.hasNext()){

    String s=(String)it.next();

    if(s.equals("java")){

    it.add("andriod");//使用(集合)迭代器添加,会同步集合

    }

    }

    System.out.println(list);

    }

    }

    相关文章

      网友评论

          本文标题:并发修改异常

          本文链接:https://www.haomeiwen.com/subject/aowbpqtx.html