如何在Java中删除整数数组?
让我们假设我有一个数字N,N是数组的大小如何在Java中删除整数数组?,java,arrays,Java,Arrays,让我们假设我有一个数字N,N是数组的大小 int numArray [] = new numArray[N]; 但是,数组的内容将每隔一个从1到正N的数字保存一次。这意味着在for循环之后,整个大小为N的数组将不会满。因此,在for循环之后,我想修剪(或调整)数组,使数组中不再有任何空插槽 例如: 假设N=5; 这意味着,在for循环之后,从1到5的每隔一个数字将出现在数组中,如下所示: int arr[]=新的int[N] int arr[0]=1; int arr[1]=3; int ar
int numArray [] = new numArray[N];
但是,数组的内容将每隔一个从1到正N的数字保存一次。这意味着在for循环之后,整个大小为N的数组将不会满。因此,在for循环之后,我想修剪(或调整)数组,使数组中不再有任何空插槽
例如:
假设N=5;
这意味着,在for循环之后,从1到5的每隔一个数字将出现在数组中,如下所示:
int arr[]=新的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。您当然最好使用一些更合适的数据结构,例如列表或集合,这取决于您以后对它的意图。这样,您甚至不需要创建一个N大小的结构,这样您就可以减少它。而是创建一个空列表并添加实际需要的元素,而不能修剪数组。最快的方法是使用System.arraycopy将其复制到较小的文件中,即:
在Java中,不能在数组创建后更改其大小。 然而,您可以做的是创建一个您需要的大小的新数组 另一个要点是,您正在创建一个基元数组:
int
。基本体不是对象,不能将值null
指定给基本体。
如果希望能够将其中的条目设置为null
,则需要创建一个java.lang.Integer
数组
Integer[] numArray = new Integer[N];
由于Java的一个名为“自动装箱”的特性,几乎所有使用原始int
值的代码都可以使用Integer
值
步骤:
Integer[]
代替int[]
null
项)我认为有一个稍微短一点的方法来修剪自己。 剩下的就是找到合适的索引 你可以做:
int someIndex = Arrays.asList(arr).indexOf(null);
arr = Arrays.copyOfRange(arr,0,someIndex);
//输出
9 4 1数组的大小是固定的,因此您可能需要查看其他数据结构,例如arraylist。请检查以下问题:为什么要除以2?我不想除以2。N可以是任意大小,而不仅仅是5。请解释划分。如果主数组的大小为N,并且只填充了其他数字,那么主数组中的非空值的数量将为N/2Ah,我知道了。非常简单的想法,我没有理解。
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;
}
}
int someIndex = Arrays.asList(arr).indexOf(null);
arr = Arrays.copyOfRange(arr,0,someIndex);
import java.util.Arrays;
public static void main( String[] args )
{
int[] nums2 = {9,4,1,8,4};
nums2 =Arrays.copyOf(nums2,3);
for (int i : nums2) {
System.out.print(i+" ");
}
}