2012-05-02 122 views
8

有沒有一種方法可以複製數組的一部分(而不是數組列表)並從中創建一個新數組?數組的Java複製部分

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

,你從它創建一個新的數組:

[1,2,3] 

是否有任何一條線/方法,將做到這一點?

+0

的可能的複製[只獲取Java中的數組的一部分嗎?] (http://stackoverflow.com/questions/11001720/get-only-part-of-an-array-in-java) – 32cupo

回答

13

這裏是一個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); 
5
int [] myArray = [1,2,3,4,5]; 

int [] holder = new int[size]; 

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

其中0代表從複製開始的源數組的索引。 和

大小代表複製操作的數量。你可以根據你的需要改變。

陣列的copyOfRange是有 並且通過該可以完成此

+2

+1您的評論。 – Lion

+1

你缺少一個參數,它需要另一個int爲destinationPosition。 –

5

許多其他方式有一個在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; 
} 
1

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

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

現在部分將是:{ 「二」, 「三」, 「四有」}