如果需要边遍历边 remove ,必须使用 iterator。且 remove 之前必须先 next,next 之后只能用一次 remove。
package com.study.lock;
import java.util.ArrayList;
import java.util.Iterator;
public class Test {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
//报错:ConcurrentModificationException
// for (Integer integer : list) {
// list.remove(integer);
// }
Iterator<Integer> iterator = list.iterator();
//ConcurrentModificationException
// while(iterator.hasNext()) {
// list.remove(iterator.next());
// System.out.println("list.size="+list.size());
// }
//报错: 通过iterator边遍历边remove元素的正确方式
while(iterator.hasNext()) {
System.out.println(iterator.next());
iterator.remove();
System.out.println("list.size="+list.size());
}
}
}