ArrayList 出现java.util.ConcurrentModificationException
时间: 2023-10-13 20:21:01 浏览: 84
`java.util.ConcurrentModificationException` 是在使用 `ArrayList` 进行迭代时出现的异常。它表示在迭代期间,通过集合的非迭代方式修改了集合的内容。
这种异常通常发生在多线程环境中,其中一个线程修改了集合,而另一个线程正在迭代该集合。如果您在迭代期间尝试修改集合,就会抛出此异常。
为了避免这个问题,您可以使用 `Iterator` 对象进行迭代,而不是直接使用 `for` 循环或 `forEach` 方法。如果您需要修改集合,请使用 `Iterator` 的 `remove()` 方法。
以下是一个示例代码,展示如何使用 `Iterator` 进行迭代和删除操作:
```java
List<String> list = new ArrayList<>();
// 添加元素
list.add("A");
list.add("B");
list.add("C");
// 使用 Iterator 进行迭代
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
if (element.equals("B")) {
// 使用 Iterator 的 remove() 方法删除元素
iterator.remove();
}
}
// 输出结果
System.out.println(list); // [A, C]
```
在上面的代码中,我们使用 `Iterator` 对象 `iterator` 进行迭代,并使用 `remove()` 方法删除了元素。这样就可以避免 `java.util.ConcurrentModificationException` 异常。
阅读全文