每次从arraylist形状到达指定位置的盒子时,都必须从arraylist中删除它。但它似乎不起作用,我做错了什么?
if(!box.removing && box.y == MoveY - 50 && MoveX != box.x) {
box.removing = true;
score += 10;
System.out.println(shapes.indexOf(box));
shapes.remove(shapes.indexOf(box));
} else {
// Gravity loop, if not reached the position. This work.
box.update(1);
}
答案 0 :(得分:2)
List类型支持“.remove()”的变体,它将对象本身作为参数,因此您不需要先查找其索引,然后按索引删除。话虽这么说,这个操作对于类型ArrayList是相对昂贵的;如果要在任意位置插入/删除,请使用LinkedList。
答案 1 :(得分:1)
//data = your Array list
for (Iterator i = data.iterator(); i.hasNext(); ) {
Object element = i.next();
if ((..your conition..)) {
i.remove();
}
}
如果要检查每个对象的条件,请使用上面的代码。但是,如果你只想要删除那个对象而不是简单地调用它。
yourList.remove(your-object);
看看this。