黑马程序员技术交流社区
标题:
List集合遍历时的并发异常注意事项
[打印本页]
作者:
xiaoya0o0o
时间:
2015-9-20 21:57
标题:
List集合遍历时的并发异常注意事项
/*
* 并发修改异常:
*
* 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());
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2