从arraylist中删除元素不显示一致的行为

时间:2014-06-15 03:08:00

标签: java arraylist

我正在实施一个有落物的游戏。它们存储在ArrayList中,当它们撞到地面时,我想将它们从arraylist中删除。

我这样做是这样的:

for (int i = 0; i < fo_ArrayList.size(); i++) {
    if (fo_ArrayList.get(i).hasHitGround()) {
        fo_ArrayList.remove(i);
    }
}

我有另一个访问此arraylist并使用其大小的线程。问题是,有时我的游戏崩溃,有时它不会。为什么不一致?什么是解决这个问题的最佳方法?

1 个答案:

答案 0 :(得分:2)

如果要在迭代时从ArrayList中删除元素,则应使用Iterator。 (将Object替换为ArrayList中存储的类型)

Iterator<Object> iterator = fo_ArrayList.iterator();
while(iterator.hasNext()) {
  if(iterator.next().hasHitGround()) {
    iterator.remove();
  }
}