有没有办法将数组复制到元素数量较少的同一个数组

Lah*_*ake 4 java arrays

我有一个包含 8 个元素的数组,我需要从中删除第一个元素并将其复制到同一个数组中。我尝试使用 System.arraycopy(...) 但数组的大小没有改变。

int[] array = {90,78,67,56,45,34,32,31};
System.arraycopy(array, 1, array, 0, array.length-1);
Run Code Online (Sandbox Code Playgroud)

我需要的是,数组应该由 78,67,56,45,34,32,31 个元素组成,数组大小为 7

有一种方法可以通过将其复制到另一个数组并将其分配给第一个数组来执行此操作

int arrayB = new int[array.length-1];
System.arraycopy(array, 1, arrayB, 0, array.length-1);
array = arrayB;
Run Code Online (Sandbox Code Playgroud)

但这不是我想要的方式。我需要在没有另一个数组的帮助下完成它。

Ste*_*n C 6

您不能在 Java 中更改数组的大小。因此,您尝试做的事情是不可能的。


FWIW:复制到 >>new<< 数组的最简洁方法是将其大小减一(根据您的示例):

int[] arrayB = Arrays.copyOfRange(arrayA, 1, arrayA.length);
Run Code Online (Sandbox Code Playgroud)

您可以使用循环复制元素 >>within<< 数组,或使用System.arrayCopy. 在arraycopy javadoc中说:

“如果srcdest参数引用同一个数组对象,则执行复制就像首先将位置srcPos通过的组件srcPos + length - 1复制到带有length组件的临时数组,然后将临时数组的内容复制到目标数组的位置destPos通过destPos + length - 1.”

换句话说,您不需要进行显式的双重复制。