为什么java里面的真强for循环,用remove(o)会报错
时间: 2023-07-19 10:15:30 浏览: 100
java遍历list集合3种方式和性能对比
Java中的增强for循环(也称为foreach循环)是一种简化遍历数组或集合的语法结构。但是,当我们在使用增强for循环迭代一个集合时,如果我们尝试在循环体内使用集合的remove()方法删除集合中的元素,会导致ConcurrentModificationException异常的抛出。这是因为增强for循环在迭代集合时使用迭代器来实现,而在调用remove()方法时,迭代器的状态会发生改变,从而导致ConcurrentModificationException异常的抛出。
解决这个问题的方法是使用普通的for循环或使用迭代器的remove()方法来删除集合中的元素。例如,我们可以使用普通的for循环来遍历集合,并使用集合的remove()方法来删除元素,如下所示:
```
List<String> list = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
if (list.get(i).equals("someValue")) {
list.remove(i);
i--;
}
}
```
或者使用迭代器的remove()方法来删除集合中的元素,如下所示:
```
List<String> list = new ArrayList<>();
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String value = iterator.next();
if (value.equals("someValue")) {
iterator.remove();
}
}
```
这样可以避免ConcurrentModificationException异常的抛出。
阅读全文