【问题标题】:Java Arraylist remove objectJava Arraylist 删除对象
【发布时间】:2012-12-12 08:39:45
【问题描述】:

每当一个盒子,从 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);
                }

【问题讨论】:

  • shapes.indexOf(box) 给出了正确的值?
  • 大声笑 ;) 你问我“shapes.indexOf(box) 是否给出正确的值”我说是的,伙计 ;)

标签: java object arraylist lwjgl


【解决方案1】:

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

【讨论】:

  • 有趣,有什么想法,如何在此实现?
  • Err...你可以只用shapes.remove(box)而不是shapes.remove(shapes.indexOf(box)),但是你应该使用LinkedList类型而不是ArrayList类型来制作它更高效。
  • 嗯,谢谢你的建议。它有点工作,但不是真的。我的意思是,它会删除前两个,然后当第三个命中时,它会崩溃。
【解决方案2】:
//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

【讨论】:

  • 你在哪里使用变量元素?
  • @KevinJensenPetersen 在您的情况下,如果您必须使用它,那么您可以使用它。仅此而已。
  • 好吧,好吧,但它似乎仍然不起作用。 pastebin.com/QWMFGJCw(忘记元素。)
猜你喜欢
  • 2016-04-11
  • 1970-01-01
  • 2015-08-05
  • 2017-08-02
  • 2019-02-13
  • 2010-11-21
  • 2013-01-26
  • 1970-01-01
  • 2020-08-23
相关资源
最近更新 更多