如何在Java循环中从集合中删除元素而不引发ConcurrentModificationException?
大家好!我是一名初学Java开发者,遇到了一个非常奇怪的错误。我写了一个简单的程序:有一个字符串列表,我想删除所有以字母"A"开头的元素。看起来逻辑没问题,但运行时却抛出了ConcurrentModificationException。
这是我的代码:
```java
List list = new ArrayList<>(Arrays.asList("Apple", "Banana", "Avocado", "Cherry"));
for (String fruit : list) {
if (fruit.startsWith("A")) {
list.remove(fruit);
}
}
```
错误发生在删除后的迭代中。我了解到不能在for-each循环中修改集合,但如何正确删除元素呢?我需要修改原始列表,而不是创建新列表。
请告诉我如何正确操作?有哪些安全删除集合元素的方法?提前谢谢!
<<>>
问题:为什么会出现ConcurrentModificationException
你遇到了一个经典问题。