在 java arraylist 遍历中删除元素,最安全且常用的做法是使用 iterator 的 remove() 方法。直接调用 arraylist 的 remove() 方法或在增强 for 循环(foreach)中删除元素会抛出 concurrentmodificationexception。iterator 允许在遍历过程中安全地移除当前元素,同时保持迭代器的内部状态一致。

为什么增强 for 循环不能用于删除?
增强 for 循环底层依赖于 Iterator,但它隐藏了迭代器的细节。如果在循环体内直接调用集合的 remove() 方法,会修改集合的结构修改计数(modCount),而 Iterator 期望 modCount 保持不变,从而检测到并发修改并抛出异常。因此,必须显式获取 Iterator 并调用其 remove() 方法。

如何正确使用 Iterator 删除元素?
通过调用 iterator.next() 获取当前元素,判断是否满足删除条件,若满足则调用 iterator.remove()。这样既完成了元素的移除,又更新了迭代器的位置,避免了并发修改异常。以下代码展示了这一过程:
import java.util.ArrayList;
import java.util.Iterator;
public class SafeRemoveExample {
public static void main(String[] args) {
ArrayList<string> list = new ArrayList();
list.add("A");
list.add("B");
list.add("C");
Iterator<string> it = list.iterator();
while (it.hasNext()) {
String item = it.next();
if ("B".equals(item)) {
it.remove(); // 安全删除
}
}
System.out.println(list); // 输出: [A, C]
}
}</string></string>
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











