并发修改异常
案例:判断集合中是否存在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);
}
}