0

每次来自 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);
                }
4

2 回答 2

2

List 类型支持“.remove()”的变体,它将对象本身作为参数,因此您不需要先找到它的索引,然后再按索引删除。话虽如此,这个操作对于 ArrayList 类型来说是相对昂贵的;如果您在任意位置插入/删除,请使用 LinkedList。

于 2012-12-12T08:44:21.643 回答
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);

看看这个

于 2012-12-12T08:48:46.113 回答