我正在实施一个有落物的游戏。它们存储在ArrayList
中,当它们撞到地面时,我想将它们从arraylist中删除。
我这样做是这样的:
for (int i = 0; i < fo_ArrayList.size(); i++) {
if (fo_ArrayList.get(i).hasHitGround()) {
fo_ArrayList.remove(i);
}
}
我有另一个访问此arraylist并使用其大小的线程。问题是,有时我的游戏崩溃,有时它不会。为什么不一致?什么是解决这个问题的最佳方法?
答案 0 :(得分:2)
如果要在迭代时从ArrayList中删除元素,则应使用Iterator。 (将Object替换为ArrayList中存储的类型)
Iterator<Object> iterator = fo_ArrayList.iterator();
while(iterator.hasNext()) {
if(iterator.next().hasHitGround()) {
iterator.remove();
}
}