3 回答

TA贡献2041条经验 获得超4个赞
您本身无法调整数组的大小,但可以使用以下一些实用程序功能创建一个新数组,并有效地将元素从旧数组复制到新数组:
public static int[] removeElement(int[] original, int element){
int[] n = new int[original.length - 1];
System.arraycopy(original, 0, n, 0, element );
System.arraycopy(original, element+1, n, element, original.length - element-1);
return n;
}
但是,更好的方法是使用ArrayList(或类似的List结构)存储数据,然后根据需要使用其方法删除元素。

TA贡献1876条经验 获得超6个赞
由于数组具有在创建时分配的固定大小,因此唯一的选择是创建一个新数组,而没有要删除的元素。
如果要删除的元素是最后一个数组项,则可以使用Arrays.copy以下命令轻松实现:
int a[] = { 1, 2, 3};
a = Arrays.copyOf(a, 2);
运行上面的代码后,a现在将指向仅包含1、2的新数组。
否则,如果要删除的元素不是最后一个,则需要以size-1创建一个新数组,并将除要删除的元素之外的所有项目复制到该数组中。
上面的方法效率不高。如果您需要管理内存中可变的项目列表,最好使用列表。具体来说,LinkedList将在列表中删除一项O(1)(理论上最快)。
添加回答
举报