如果需要边遍历边 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());
}
}
}
本文详细解析了在Java中如何正确地边遍历边删除List中的元素,避免ConcurrentModificationException异常。通过使用Iterator迭代器,确保了在遍历过程中能够安全地移除元素。
2545

被折叠的 条评论
为什么被折叠?



