Avatar ·

如何在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

你遇到了一个经典问题。