我试图从一个 ArrayList
中删除项目。有时会出现异常,java.util.ConcurrentModificationException
。
起初我尝试使用 array_list_name.remove(i)
来删除它们,但失败了,有些人建议使用 Iterator。所以我的当前代码如下:
for (Iterator<Collectable> iter = array_list_name.iterator(); iter.hasNext();) {
Collectable s = iter.next();
if (s.equals(array_list_name.get(id))){
iter.remove();
return true;
}
}
我在视图中的onDraw()
函数中调用了array_list_name
。我的视图是一个SurfaceView
。有人能建议我如何从ArrayList
中删除项目而不会出现此错误吗?
onDraw
在 UI 线程中调用,因此它可能会在另一个线程中的项目删除同时被调用。 - Xion如果在迭代进行中修改了底层集合,则迭代器的行为是未指定的...
- Kai