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

前端之家收集整理的这篇文章主要介绍了如何在Java中修剪出一个整数数组?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的数字是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;
    }
}

猜你在找的Java相关文章