假设我有一个整数数组,
int[] array = new int[7];
for(int i = 0; i < 7; i++)
{
array[i] = i;
}
现在我只想获得array
中的前四个数字,然后将其转换为另一个数组。
所以我真的想要像...这样的东西。
newArray = array[0-3].
我知道语法是错误的,但我只是对我尝试做的事情有了一般概念,是否有可能?或者我是否必须创建一个循环并将其手动添加到newArray
?
答案 0 :(得分:30)
方法1
int[] newArr = new int[4];
System.arraycopy(array, 0, newArr, 0, 4);
该方法有五个参数:
src
:源数组。srcPosition
:您希望从哪里开始的位置
复制。des
:目标数组。desPosition
:目标数组中复制位置的位置
应该开始。length
:要复制的元素数。如果src或des中的任何一个为null,则此方法抛出NullPointerException。 它还会在以下情况下抛出ArrayStoreException:
方法2
利用
Arrays.copyOf(array,4)
复制前4个元素,截断其余元素。
的
Arrays.copyOfRange(array,1,5)
如果需要数组的中间部分,则复制元素1-4。
答案 1 :(得分:10)
int[] newArray = Arrays.copyOf(array,4);
答案 2 :(得分:2)
您可以创建所需大小的新数组(在本例中为4),然后使用System.arrayCopy将内容从一个数组复制到另一个数组。
答案 3 :(得分:2)
您可以使用copyOfRange来实现此目的,将指定数组的指定范围复制到新数组中。
copyOfRange(byte[] original,
int from,
int to)
参数:
original - 要从中复制范围的数组
from - 要复制的范围的初始索引,包含
to - 要复制的范围的最终索引,独占。 (该索引可能位于数组之外。)