数组的Java副本部分

use*_*901 18 java arrays copy java1.4

有没有一种方法可以复制数组的一部分(不是arraylist)并从中创建一个新数组?

Example:
[1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)

并从中创建一个新数组:

[1,2,3]
Run Code Online (Sandbox Code Playgroud)

有没有一行/方法可以做到这一点?

Boh*_*ian 20

这是一个java 1.4兼容的1.5-liner:

int[] array = { 1, 2, 3, 4, 5 };
int size = 3;

int[] part = new int[size];
System.arraycopy(array, 0, part, 0, size);
Run Code Online (Sandbox Code Playgroud)

您可以在一行中执行此操作,但您不会引用结果.

要制作单行,您可以将其重构为一种方法:

private static int[] partArray(int[] array, int size) {
    int[] part = new int[size];
    System.arraycopy(array, 0, part, 0, size);
    return part;
}
Run Code Online (Sandbox Code Playgroud)

然后像这样打电话:

int[] part = partArray(array, 3);
Run Code Online (Sandbox Code Playgroud)


ars*_*jii 9

在以下方面存在预先存在的方法java.util.Arrays:newArray = Arrays.copyOfRange(myArray, startindex, endindex).或者您可以轻松编写自己的方法:

public static array[] copyOfRange(array[] myarray, int from, int to) {
    array[] newarray = new array[to - from];
    for (int i = 0 ; i < to - from ; i++) newarray[i] = myarray[i + from];
    return newarray;
}
Run Code Online (Sandbox Code Playgroud)


Jav*_*tor 6

int [] myArray = [1,2,3,4,5];

int [] holder = new int[size];

System.arraycopy(myArray,0,holder,size);
Run Code Online (Sandbox Code Playgroud)

其中0代表复制应该从哪里开始的源数组的索引.和

size代表复制操作的数量.你可以根据自己的需要改变.

copyOfRange of Arrays是有很多其他方法可以实现的

  • 您缺少一个参数,因为它需要另一个 int 作为 destinationPosition。 (2认同)

emb*_*oss 5

Arrays#copyOfRange可以解决问题。