/*
* 并发修改异常:
*
* 1.Iterator:remove()方法不会触发并发修改异常;
* 2.ListIterator:remove()方法不会触发并发修改异常;
* set()方法不会触发并发修改异常;
* add()方法不会触发并发修改异常;
* 3.当使用迭代器遍历元素时,通过List的对象去修改元素内容时,会引发并发修改异常:ConcurrentModificationException
* 解决:
* 使用迭代器遍历,如果要修改集合,就要通过迭代器去修改。不要通过List对象修改;
*/
public class Demo {
public static void main(String[] args) {
List list = new ArrayList();
list.add("张三");
list.add("李四");
list.add("王五");
ListIterator listIt = list.listIterator();
while(listIt.hasNext()){
String str = (String)listIt.next();
System.out.println(str);
if(str.equals("李四")){
// listIt.remove();//OK的
// listIt.set("赵七");//OK的
// listIt.add("赵七");//OK的
list.add("赵七");//并发修改异常:通过List对象去修改的;
}
}
System.out.println("----------------------");
Iterator it = list.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
|
|