加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何在Java中修剪出一个整数数组?

发布时间:2020-12-14 16:17:27 所属栏目:Java 来源:网络整理
导读:我的数字是N.N将是数组的大小. int numArray [] = new numArray[N]; 但是,数组的内容将保持从1到正N的每个其他数字.这意味着在循环之后整个大小N数组将不会满.因此,在for循环之后,我想修剪(或调整大小)数组,以便数组中不再有任何空插槽. 示例: 假设N = 5;
我的数字是N.N将是数组的大小.
int numArray [] = new numArray[N];

但是,数组的内容将保持从1到正N的每个其他数字.这意味着在循环之后整个大小N数组将不会满.因此,在for循环之后,我想修剪(或调整大小)数组,以便数组中不再有任何空插槽.

示例:

假设N = 5;
这意味着,从1到5的每个其他数字都将在数组中,如下所示:

int arr [] = new int [N];

int arr[0]=1;
int arr[1]=3;
int arr[2]= null;
int arr[3]= null;
int arr[4]= null;

现在,我想在for循环之后修剪(或调整大小),以便保留null的索引将消失,然后数组应该是:

int arr[0]=1;
int arr[1]=3;

数组的大小现在是2.

解决方法

创建后,您无法在Java中更改数组的大小.
但是,您可以创建一个所需大小的新数组.

另一个重要的一点是,您正在创建一个基元数组:int.基元不是对象,您不能将值null赋给基元.
如果希望能够将其中的条目设置为null,则需要创建java.lang.Integer数组.

Integer[] numArray = new Integer[N];

这就是一个名为自动装箱的Java功能,几乎所有使用原始int值的代码也适用于Integer值.

脚步:

>使用Integer []而不是int []
>计算所需的大小(计算原始数组中的非空条目)
>分配所需大小的新数组
>遍历旧数组,并将其中的每个非空值复制到新数组.

码:

Integer[] oldArray = ...;

// Step 2
int count = 0;
for (Integer i : oldArray) {
    if (i != null) {
        count++;
    }
}

// Step 3
Integer[] newArray = new Integer[count];

// Step 4
int index = 0;
for (Integer i : oldArray) {
    if (i != null) {
        newArray[index++] = i;
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读