从数组中删除项目是否可能?

3

是否可以从数组中删除项目(不是ArrayList),例如:

JButton[] arr = {button1, button2, button3};

我希望移除它中的button1按钮。

4个回答

2

是的,你可以这样做:arr[0] = null;,然后按钮1就从数组中消失了。

如果你想让数组更小,比如一个只有两个元素的数组,那么你需要通过System.arraycopy(originalArray, 1, destinationArray, 0, 2)进行数组复制,将最后两个元素复制到一个只有两个元素的数组中。

最好的解决方案:使用ArrayList,因为它就是为此而建立的。

顺便提一下,你的问题与Swing无关。


1
使用来自org.apache.commons.langArrayUtils.removeElement(Object[],int),它将删除索引为0的元素,并且数组的大小将减少1
arr =(JButton[])ArrayUtils.removeElement(arr , 0);

1
构建数组后,其大小被设置,因此您无法删除 button1 并将数组更改为 {button2,button3},但是您可以通过执行 arr [0] = null 将第一个项目设置为 null

1
你可以将任何索引设置为null,但数组的大小仍然保持不变,这就是数组的工作原理,对吧?
一种解决方法是先将数组转换为ArrayList,删除项目,然后再将其转换回数组 -
List<String> list = new ArrayList<String>(Arrays.asList(array));
list.remove(button1);
array= list.toArray(array);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接