遍历集合时删除元素触发并发修改异常
时间: 2023-08-10 20:04:13 浏览: 145
当你遍历集合并且在遍历过程中删除元素时,可能会触发"并发修改异常"(ConcurrentModificationException)。这是因为在使用迭代器遍历集合时,集合的结构发生了变化,导致迭代器失效。
为了避免并发修改异常,你可以使用迭代器的 remove() 方法来删除元素,而不是直接在集合中进行删除操作。迭代器的 remove() 方法可以在遍历过程中安全地删除元素,并且不会导致并发修改异常。以下是一个示例:
```java
List<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
Iterator<Integer> iterator = numbers.iterator();
while (iterator.hasNext()) {
int number = iterator.next();
if (number == 2) {
iterator.remove(); // 使用迭代器的 remove() 方法删除元素
}
}
System.out.println(numbers); // 输出 [1, 3]
```
在上面的示例中,我们使用迭代器遍历列表,并在遍历过程中删除了元素 2。通过使用迭代器的 remove() 方法,我们成功地删除了元素并且没有触发并发修改异常。
需要注意的是,在使用迭代器遍历集合时,尽量避免直接在集合中进行添加或删除操作,以免触发并发修改异常。如果需要对集合进行修改,建议使用迭代器的相应方法来进行操作。
阅读全文