Java中是否有一个可接受的最佳实践,用于在迭代列表时删除列表元素?

Jon*_*han 3 java list concurrentmodification

我发现有关避免一段ConcurrentModificationException时间这样做的最佳方法的相互矛盾的建议:

    List<Apple> Apples = appleCart.getApples();
    for (Apple apple : Apples)
    {
        delete(apple);
    }
Run Code Online (Sandbox Code Playgroud)

我倾向于使用Iterator代替a List并调用它的remove方法.

这在这里最有意义吗?

Hov*_*els 5

是的,使用迭代器.然后你可以使用它的remove方法.

  for (Iterator<Apple> appleIterator = Apples.iterator(); appleIterator.hasNext();) {
     Apple apple = appleIterator.next();
     if (apple.isTart()) {
        appleIterator.remove();
     }
  }
}
Run Code Online (Sandbox Code Playgroud)