如果数组不是由ArrayList创建的,我如何删除数组对象?

时间:2014-01-18 16:59:15

标签: java arrays

我试图在我的游戏中移除一颗流星,因为它是一颗子弹,但似乎有一个错误,我现在还没有其他方法来删除该物体。

for (int i = 0; i < numA; i++) {
    if (meteor[i].isVisible())
      meteor[i].move();
    else meteor[i].remove(i);
    }

3 个答案:

答案 0 :(得分:4)

你知道,实际上你应该使用Set。数组的效率太低了。

要做到这一点,而不是声明一个数组:

private Meteor[] meteor = new Meteor[10];

声明Set

private Set<Meteor> meteor = new HashSet<Meteor>();

你可以添加流星:

meteor.add(newMeteor);

并删除它们:

meteor.remove(meteorToRemove);

并检查它们是否在集合中:

if (meteor.contains(met))

并迭代它们:

for (Meteor m : meteor)

答案 1 :(得分:1)

Apache在ArrayUtils中有一个公共实用程序方法可以提供帮助。它的工作原理如下:

array = ArrayUtils.removeElement(meteor, elementToDelete)

查看文档以获取更多信息:Apache Docs

答案 2 :(得分:0)

仅限阵列解决方案

for (int i = 0; i < numA; i++) {
    if (meteor[i].isVisible())
        meteor[i].move();
    else {
        Meteor[] result = new Meteor[meteor.length - 1];
        System.arraycopy(meteor, 0, result, 0, i);
        if (meteor.length != i) {
            System.arraycopy(meteor, i + 1, result, i, meteor.length - i - 1);
        }
        meteor = result;
    }
}