我有一个具有静态对象ArrayList的ClassA

public static ArrayList<Meteorit> meteorits = new ArrayList<Meteorit>();


现在我要像这样从列表中删除一个对象

ClassA.meteorits.remove(this);


这是用Meteorit类编写的。但是,当我想使用ArrayList中的对象时,它将引发异常。

Exception in thread "LWJGL Application" java.util.ConcurrentModificationException


我使用Iterator从ArrayList中删除对象,但是现在我不知道如何在这种情况下使用它。

最佳答案

这是因为某个线程实际上正在for每个循环中查看此列表,也许您正在尝试在for-each主体中删除此列表的元素?您不能在for-each中删除元素,但是可以在迭代器循环中:

您可以使用迭代器代替每个迭代器来删除和查看列表中的元素,如下所示:

public static ArrayList<Meteorit> meteorits = new ArrayList<Meteorit>();

Iterator<Meteorit> itr = meteorits.iterator();

while (itr.hasNext()) {
       if (itr.next()==this) {
          itr.remove();
       }
}

10-08 00:51