并发修改异常

案例:判断集合中是否存在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);

}

}

你可能感兴趣的:(并发修改异常)