从列表中删除项目

新手上路,请多包涵

在遍历列表时,我想根据条件删除列表中的一个项目。请参阅下面的代码。

这给了我一个 ConcurrentModification 异常。

 for (Object a : list) {
    if (a.getXXX().equalsIgnoreCase("AAA")) {
        logger.info("this is AAA........should be removed from the list ");
        list.remove(a);
    }
}

如何才能做到这一点?

原文由 Techie 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 488
2 个回答

您需要使用 Iterator 并在 上调用 remove() iterator 而不是使用 for

原文由 kosa 发布,翻译遵循 CC BY-SA 3.0 许可协议

for (Iterator<String> iter = list.listIterator(); iter.hasNext(); ) {
    String a = iter.next();
    if (...) {
        iter.remove();
    }
}

额外假设列表是字符串。正如已经回答的那样,需要 list.iterator()listIterator 也可以做一些导航。


更新

正如@AyushiJain 评论的那样,有

list.removeIf(...);

原文由 Joop Eggen 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题