如何一边遍历一遍删除list中的元素
时间: 2024-01-08 13:02:50 浏览: 28
在Java中,如果要一边遍历一边删除`List`中的元素,可以使用迭代器(Iterator)。迭代器提供了安全的遍历方式,可以在遍历过程中删除元素。
以下是示例代码:
```java
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()) {
int num = iterator.next();
if (num % 2 == 0) {
iterator.remove();
}
}
System.out.println(list);
```
输出结果为:[1, 3, 5]
在上述代码中,我们使用`iterator()`方法获取到`List`的迭代器。然后,在`while`循环中使用`hasNext()`方法判断是否还有下一个元素,如果有,则使用`next()`方法获取当前元素。在判断当前元素是否需要删除的条件下,调用`remove()`方法删除该元素。
需要注意的是,在使用迭代器删除元素时,必须使用迭代器的`remove()`方法,而不能使用`List`的`remove()`方法,否则会抛出`ConcurrentModificationException`异常。这是因为在使用迭代器遍历时,如果在遍历过程中直接使用`List`的`remove()`方法删除元素,会导致迭代器内部的计数器和实际元素个数不一致,从而抛出异常。
使用迭代器遍历并删除元素是一种安全、有效的方式,可以实现一边遍历一边删除`List`中的元素。