import java.util.ArrayList;
import java.util.List;
public class forEach_Iterator {
public static void main(String[] args) {
List<Integer> integerList = new ArrayList<>();
integerList.add(1);
integerList.add(2);
integerList.add(3);
for (int i = 0; i < integerList.size(); i++) {
if (integerList.get(i) == 1){
integerList.remove(i);
i--;
}
}
}
}
用普通的for循环可以对list元素进行修改。
(但要注意需要计数器减一,否则会漏掉一个)
import java.util.ArrayList;
import java.util.List;
public class forEach_Iterator {
public static void main(String[] args) {
List<Integer> integerList = new ArrayList<>();
integerList.add(1);
integerList.add(2);
integerList.add(3);
for (int e :
integerList) {
if (e == 1)
integerList.remove(e);
}
}
}
for each对list元素修改报错。
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909)
at java.util.ArrayList$Itr.next(ArrayList.java:859)
at forEach_Iterator.main(forEach_Iterator.java:16)
意思就是不能在遍历的时候修改。