java forEach怎么删除元素
时间: 2023-10-24 12:00:55 浏览: 145
C#在foreach遍历删除集合中元素的三种实现方法
5星 · 资源好评率100%
在Java中,使用foreach循环遍历集合时,是不允许直接删除元素的,因为这会导致ConcurrentModificationException异常。这是因为foreach循环在内部使用了迭代器(Iterator)进行迭代,并且迭代器是在遍历过程中进行一些检查的。如果在遍历过程中直接使用集合的remove()方法删除元素,那么迭代器的状态就会失效,这会导致检查失败并抛出异常。
如果需要在遍历过程中删除元素,可以使用迭代器的remove()方法来进行删除。迭代器的remove()方法会删除最后返回的元素,并且保持迭代器的状态有效。具体来说,当调用remove()方法后,迭代器会将被删除元素的下一个元素作为下一次调用next()方法的返回值,并且更新expectedModCount和modCount的值,以确保迭代器和集合的状态保持一致。
示例代码如下:
```
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0; i < 5; i++) {
list.add(i);
}
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()) {
Integer num = iterator.next();
if (num.equals(0)) {
iterator.remove();
}
}
System.out.println(list);
```
在上述代码中,我们通过迭代器的remove()方法删除了值为0的元素,并且输出了删除后的集合元素。
所以,要在foreach循环中删除元素,应使用迭代器的remove()方法。这样可以避免ConcurrentModificationException异常的抛出。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [Java中集合foreach删除元素问题](https://blog.csdn.net/victoryyounger/article/details/109700481)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文