gpt4 book ai didi

java - foreach里面remove的时候,需要退一步吗

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:12:52 24 4
gpt4 key购买 nike

使用这段 Java 代码:

for (ContactsReduced curContact : allcontacts) {
..........
allcontacts.remove(curContact);
}

我根据条件删除,foreach 是否会按顺序错过下一个项目,我们是否需要(以某种方式)后退?

最佳答案

该代码将破坏大多数集合 - 除了少数集合,例如 java.util.concurrent 中的集合,不支持在遍历集合时修改集合。

几个选项:

  • 显式获取并使用迭代器(在集合上调用 iterator())而不是增强的 for 循环,并调用 iterator.remove() 来移除项目
  • 使用普通的 for 循环,在删除后向前移动并后退,或者从末尾向后移动
  • 维护一个单独的要删除的项目列表,然后迭代后删除它们

关于java - foreach里面remove的时候,需要退一步吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2847555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com