//list遍历时陷阱
public class ListRemoveTest{
public static void main(String[] args){
List<Integer> list=new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
for(Integer value:list){
if(2==value){
list.remove(value); //ConcurrentModificationException
}
System.out.println(value);
}
}
}
/*
Notice:
Java中的for each实际上使用的是iterator进行处理的。而iterator是不允许集合在iterator使用期间删除的。所以导致了iterator抛出了ConcurrentModificationException 。
*/
//正确做法:
public class ListRemoveTest{
public static void main(String[] args){
List<Integer> list =new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
Interator<Integer> it =list.iterator();
while(it.hasNext()){
Integer value=it.next();
if(2==value){
it.remove();
}
System.out.println(value);
}
}
}
/*
Notice:
对于iterator的remove()方法,也有需要我们注意的地方:
1、每调用一次iterator.next()方法,只能调用一次remove();
2、调用remove()方法前,必须调用过一次next()方法
*/