public static void main(String[] args){
List list = new ArrayList();
list.add("a"); //Object obj = new String();
list.add("b");
list.add("world");
list.add("c");
list.add("d");
list.add("e");
//正常执行,输出:[a, b, world, c, d, e, javaee]
for(int i=0;i<list.size();i++){
if("world".equals(list.get(i))){
list.add("javaee");
}
}
//执行报错:java.util.ConcurrentModificationException
for(Object obj:list){
if("world".equals(obj)){
list.add("javaee");
}
}
//执行报错:java.util.ConcurrentModificationException
Iterator it1 = list.iterator();
while(it1.hasNext()){
Object obj = it1.next();
if("world".equals(obj)){
list.add("javaee");
}
}
//正常执行,输出:[a, b, world, javaee, c, d, e]
ListIterator it2 = list.listIterator();
while(it2.hasNext()){
Object obj = it2.next();
if("world".equals(obj)){
//注:如果是List.add方法报错java.util.ConcurrentModificationException
//遍历的同时在增加元素,并发修改ConcurrentModificationException
//list.add("javaee");
//ListIterator.add
//该元素直接插入到 next 返回的下一个元素的前面(如果有),或者 previous 返回的下一个元素之后(如果有)
it2.add("javaee");
}
}
System.out.println(list);
}
|