ArrayList 出现java.util.ConcurrentModificationException
时间: 2023-10-13 20:28:53 浏览: 86
`java.util.ConcurrentModificationException` 是一个运行时异常,它通常在使用集合对象时出现。当一个线程正在遍历一个集合对象时,另一个线程对该集合对象进行了修改,就会抛出该异常。
在 `ArrayList` 中,如果在遍历过程中进行了添加、删除或修改操作,就会出现 `java.util.ConcurrentModificationException` 异常。可以使用迭代器来避免该异常的出现,如下所示:
```java
List<String> list = new ArrayList<>();
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
// 进行操作
}
```
如果需要在遍历过程中进行添加、删除或修改操作,可以使用 `ListIterator`,如下所示:
```java
List<String> list = new ArrayList<>();
ListIterator<String> iterator = list.listIterator();
while (iterator.hasNext()) {
String element = iterator.next();
// 进行操作
if (needToAdd) {
iterator.add(newElement);
} else if (needToRemove) {
iterator.remove();
} else if (needToSet) {
iterator.set(newElement);
}
}
```
需要注意的是,使用 `ListIterator` 进行修改操作时,需要先调用 `next` 或 `previous` 方法,否则会抛出 `IllegalStateException` 异常。
阅读全文