如何修复 ConcurrentModificationException

我想在遍历它时从我的arrayList 中删除一个项目,并且它ArrayList有一个类型类成员。我已经阅读了多个有关如何解决此问题的示例,但是没有一个有效,ConcurrentModificationException仍然被抛出。


Iterator<Members> itr = members.iterator();

while (itr.hasNext()) {

  Members foundMember = itr.next();

  if (foundMember.equals(member)){

    itr.remove();

  }

}


慕森王
浏览 76回答 2
2回答

守着一只汪

我最终得到的解决方案是,使用 CopyOnWriteArrayList,而不是使用 remove(); 的 ArrayList nad;方法。

狐的传说

当然我的第一个解决方案是不正确的facepalm ,如上所述,“.removeIf”很可能是最简单的解决方案。只需使用“正常”的 for 循环(我认为这应该可行,请看一下 这个,顺便说一句。“增强的 for 循环”将不起作用。List<Member> list1 = new ArrayList<>();List<Member> list2 = new ArrayList<>(list1);for (int i = 0; i < list1.size(); i++) {&nbsp; Member member = list1.get(i);&nbsp; ...&nbsp; list2.remove(member);}list1 = list2;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java