使用旧数组中的内容创建新数组,同时保持旧数组静态

时间:2011-11-19 10:26:37

标签: java arrays

假设我有一个整数数组,

int[] array = new int[7];
for(int i = 0; i < 7; i++)
{
array[i] = i;
}

现在我只想获得array中的前四个数字,然后将其转换为另一个数组。

所以我真的想要像...这样的东西。

newArray = array[0-3].

我知道语法是错误的,但我只是对我尝试做的事情有了一般概念,是否有可能?或者我是否必须创建一个循环并将其手动添加到newArray

4 个答案:

答案 0 :(得分:30)

方法1

int[] newArr = new int[4];
System.arraycopy(array, 0, newArr, 0, 4);

该方法有五个参数:

  1. src:源数组。
  2. srcPosition:您希望从哪里开始的位置 复制。
  3. des:目标数组。
  4. desPosition:目标数组中复制位置的位置 应该开始。
  5. length:要复制的元素数。
  6. 如果src或des中的任何一个为null,则此方法抛出NullPointerException。 它还会在以下情况下抛出ArrayStoreException:

    • 如果src不是数组。
    • 如果des不是数组。
    • 如果src和des是不同数据类型的数组。

    方法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 - 要复制的范围的最终索引,独占。 (该索引可能位于数组之外。)