簡體   English   中英

數組的Java副本部分

[英]Java copy section of array

有沒有一種方法可以復制數組的一部分(不是arraylist)並從中創建一個新數組?

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

並從中創建一個新數組:

[1,2,3]

有沒有一行/方法可以做到這一點?

請參閱方法Arrays.copyOfRange

這是一個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);

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;
}
int [] myArray = [1,2,3,4,5];

int [] holder = new int[size];

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

其中0代表復制應該從哪里開始的源數組的索引。

size代表復制操作的數量。 你可以根據自己的需要改變。

copyOfRange of Arrays是有很多其他方法可以實現的

數組#copyOfRange可以解決問題。

正如其他人所說,你可以使用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” }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM