【问题标题】:How can I remove a given number of elements from an array?如何从数组中删除给定数量的元素?
【发布时间】:2016-10-05 14:33:30
【问题描述】:

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

int i = 21;
i = i - removedElements

如何更新数组以包含这么多元素,而不是创建具有所需元素数量的全新数组?

【问题讨论】:

  • 为什么这是一个数组而不是列表?
  • 使用ArrayList
  • 你不能。 Java 数组是固定大小的。唯一的方法是创建一个新大小的新数组并复制您要保留的值。 或者使用ArrayList,正如@pvg所说,因为ArrayList会自动为你调整大小。

标签: java arrays loops arraylist


【解决方案1】:

正如其他人已经提到的,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 将从数组中删除。

请记住,对于非常大的数组,这将是可怕的事情。 希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-27
    • 1970-01-01
    相关资源
    最近更新 更多