如何从数组中删除给定数量的元素?

时间:2016-06-06 04:50:05

标签: java arrays loops arraylist

我有一个以整数个元素开头的JLabel数组。如何从阵列中删除一定数量的元素?例如,每次更新int时都会:

int i = 21;
i = i - removedElements

如何更新数组以包含那么多元素,而不是使用所需数量的元素创建一个全新的数组?

1 个答案:

答案 0 :(得分:0)

正如其他人已经提到的那样,List是这里的方式,因为它专门用于添加和/或删除元素。

但是如果您更喜欢使用已经建立的JLabel数组,那么您将需要意识到从该数组中删除元素的唯一方法是实际创建另一个数组,其中包含要从中排除的所需元素然后将其返回到原始数组中。下面我提供了一个名为 deleteJLabelFromArray()的简单方法,可以为您执行此操作:

public static JLabel[] deleteJLabelFromArray(JLabel[] srcArray, int... indexesToDelete) {
    int counter = 0;
    JLabel[] newArray = new JLabel[srcArray.length - indexesToDelete.length];
    for (int i = 0; i < srcArray.length; i++) {
        boolean noGo = false;
        for (int j = 0; j < indexesToDelete.length; j++) {
            if (i == indexesToDelete[j]) { noGo = true; break; }
        }
        if (noGo == false) { newArray[counter] = srcArray[i]; counter++; }
    }
    return newArray;
}

使用此方法,您可以删除 indexesToDelete 参数中提供的任何索引(用逗号分隔)。将代码复制/粘贴到项目中,然后就可以使用它:

JLabel[] jla = {jLabel2,jLabel3,jLabel4,jLabel5};
jla = deleteJLabelFromArray(jla, 2);
for (int i = 0; i < jla.length; i++) {
    System.out.println(jla[i]);
}

在此示例中,我们将删除元素编号2(请记住,数组基于0),因此 jLabel4 将从数组中删除。

请记住,这对于真正大的阵列来说是可怕的。 希望这会有所帮助。