在Java的List
集合中,如果你尝试在for循环中直接删除元素,可能会遇到ConcurrentModificationException
异常。这是因为当你使用for-each循环(也称为增强的for循环)遍历列表时,实际上是通过迭代器来访问元素的。如果你在循环体内直接调用List
的remove
方法,就会修改列表的结构,这会导致迭代器失效,从而抛出ConcurrentModificationException
。
import java.util.ArrayList;
import java.util.List;
public class RemoveElementExample {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(2); // 添加重复元素
list.add(4);
list.add(2); // 再添加一个重复元素
int elementToRemove = 2;
for (Integer item : list) {
if (item.equals(elementToRemove)) {
list.remove(item); // 这会抛出ConcurrentModificationException
}
}
}
}
上面的代码在尝试删除列表中所有值为2
的元素时,会抛出ConcurrentModifica