为了账号安全,请及时绑定邮箱和手机立即绑定

从数组中删除项目并缩小数组

从数组中删除项目并缩小数组

千巷猫影 2019-12-03 15:58:52
如何从数组中删除项目,然后将数组调整为较小的大小?同样,如果需要添加其他项目,如何增加容量?
查看完整描述

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结构)存储数据,然后根据需要使用其方法删除元素。


查看完整回答
反对 回复 2019-12-03
?
HUX布斯

TA贡献1876条经验 获得超6个赞

由于数组具有在创建时分配的固定大小,因此唯一的选择是创建一个新数组,而没有要删除的元素。


如果要删除的元素是最后一个数组项,则可以使用Arrays.copy以下命令轻松实现:


int a[] = { 1, 2, 3};

a = Arrays.copyOf(a, 2);

运行上面的代码后,a现在将指向仅包含1、2的新数组。


否则,如果要删除的元素不是最后一个,则需要以size-1创建一个新数组,并将除要删除的元素之外的所有项目复制到该数组中。


上面的方法效率不高。如果您需要管理内存中可变的项目列表,最好使用列表。具体来说,LinkedList将在列表中删除一项O(1)(理论上最快)。


查看完整回答
反对 回复 2019-12-03
  • 3 回答
  • 0 关注
  • 339 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信