在循环中从集合中删除对象而不引发ConcurrentModificationException
大家好!我正在用Java编写一个小型任务管理应用。我有一个ArrayList,其中Task是一个简单的POJO,包含boolean字段isCompleted。我需要从列表中删除所有已完成的任务。我写了这样的代码:
```java
List tasks = new ArrayList<>();
// ... 添加任务 ...
for (Task task : tasks) {
if (task.isCompleted()) {
tasks.remove(task);
}
}
```
但运行时我得到了ConcurrentModificationException。我知道这与在迭代期间修改集合有关,但我不明白如何正确操作。我尝试过使用带索引的普通for循环——有时有效,有时会抛出IndexOutOfBoundsException,因为删除后索引会移位。请告诉我如何在循环中正确删除集合中的元素?是否需要使用特殊的iterator,或者在Java 8+中有更现代的方法?提前感谢!
<<>>