我有一个具有静态对象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();
}
}