如何从数组中删除对象

时间:2014-04-23 21:37:07

标签: java jbutton

请尽可能难以理解

我有一个50大小的jbuttons数组,对于这个例子生病使用7我有1 2 3 4 6 7但不是5的jbutton对象。这些都打印在屏幕上。我想删除这些jbuttons,但最多5个按钮被删除,而最后两个按钮不被删除。

        for(int i = 1; i < 51; i++){ 
            if(seat.buttonArray[i] == null){
            remove(seat.buttonArray[i]);
            seat.buttonArray[i] = null;}
        }

2 个答案:

答案 0 :(得分:2)

假设您希望在删除后更改后面的索引,则无法从array 删除元素。为此,您应该使用List

Iterator buttonIterator = seat.buttonList.iterator();
while (buttonIterator.hasNext()) {
    Object button = buttonIterator.next(); //or more specific type, if your list was generified
    if (button == null) { //or some other criteria, wrote this just as an example
        buttonIterator.remove();
    }
}

如果必须使用array,您有两种选择:

  • seat.buttonArray[i]设置为null值,表示已将其删除;
  • 每次删除内容时重新创建数组。有关详细信息,请参阅System.arraycopy javadoc,但由于性能方面的考虑,我不建议使用此方法。

答案 1 :(得分:1)

您可以将值存储在临时数组中,然后将所需内容复制回原始数组中。与此有点类似:

int myArray[50];
int temp[50];
int good;
for (int i = 0; i < 50; i++) {
    myArray[i] = i;
}
for (int i = 0; i < 50; i++) {
    temp[i] = myArray[i];
}
good = 0;
for (int i = 0; i < 50; i++) {
    if (i < 10) {
    } else {
        myArray[good] = temp[i];
        good += 1;
    }
}

看起来比我初想的还要糟糕......但它基本上就是你想要的。