数组的Java副本部分

时间:2012-05-02 23:30:52

标签: java arrays copy java1.4

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

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

然后从中创建一个新数组:

[1,2,3]

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

6 个答案:

答案 0 :(得分:24)

请参阅方法Arrays.copyOfRange

答案 1 :(得分:18)

这是一个兼容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);

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

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

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

答案 2 :(得分:9)

java.util.ArraysnewArray = 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;
}

答案 3 :(得分:5)

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

int [] holder = new int[size];

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

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

size表示复制操作的数量。您可以根据需要进行更改。

数组的copyOfRange就在那里 和其他许多方法可以实现这一目标

答案 4 :(得分:4)

Arrays#copyOfRange可以解决问题。

答案 5 :(得分:3)

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

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

现在部分将是: {“两个”,“三个”,“四个”}