Java复制数组的部分内容

21

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

Example:
[1,2,3,4,5]

然后你可以从它创建一个新的数组:

[1,2,3]

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

6个回答

26

24

这是一个兼容Java 1.4的1.5行代码:

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

int[] part = new int[size];
System.arraycopy(array, 0, part, 0, size);

您可以在一行代码中完成此操作,但是您将无法引用结果。

要将其重构为一行代码,您可以将其转换为一个方法:

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

然后像这样调用:

int[] part = partArray(array, 3);

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;
}

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

int [] holder = new int[size];

System.arraycopy(myArray,0,holder,size);

0代表从源数组索引开始复制,size表示要进行的复制操作次数。您可以根据需要更改。

Arrays的copyOfRange方法可用于此操作,还有许多其他方法可以实现此操作。


2
你缺少一个参数,因为它需要另一个整数作为目标位置。 - Faahmed

5

4

正如其他人所说,你可以使用Arrays.copyOfRange方法。一个例子是:

String[] main = {"one", "two", "three", "four", "five"};
int from = 2;
int to = 4;
String[] part = Arrays.copyOfRange(main, from, to);

现在将要翻译的是:{"two", "three", "four"}

,这部分内容涉及IT技术。

1
有一个错误,部分代码是{"three", "four", "five"},因为数组索引从0开始。 - Juan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接