2012-05-02 19 views
8

Czy istnieje metoda, która skopiuje sekcję tablicy (nie tablicy) i utworzy z niej nową tablicę?Sekcja kodu Java tablicy

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

i utworzyć nową tablicę z niego:

[1,2,3] 

czy są jakieś jedna linia/metody, które będą to robić?

+0

Możliwy duplikat [dostać tylko część tablicy w Java?] (http://stackoverflow.com/questions/11001720/get-only-part-of-an-array-in-java) – 32cupo

Odpowiedz

13

Oto Java 1.4 kompatybilne 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); 

Można to zrobić w jednej linii, ale nie miałyby odniesienie do wynik.

Aby wykonać jedną wkładkę, można byłaby to do metody:

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

następnie wywołać tak:

int[] part = partArray(array, 3); 
5
int [] myArray = [1,2,3,4,5]; 

int [] holder = new int[size]; 

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

gdzie 0 oznacza indeks tablicy źródłowej, z którego należy rozpocząć kopiowanie. i

rozmiar oznacza liczbę operacji kopiowania. To, że możesz zmieniać się w zależności od potrzeb.

copyOfRange tablic ma i wiele innych sposobów, dzięki którym można to osiągnąć

+2

+1 za komentarz. – Lion

+1

Brakuje jednego argumentu, ponieważ wymaga on innej int dla pozycji docelowej. –

5

Jest istniejące wcześniej metoda w java.util.Arrays: newArray = Arrays.copyOfRange(myArray, startindex, endindex). Albo można łatwo napisać własną metodę:

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

Jak inni stwierdzili, można użyć metody Arrays.copyOfRange . Przykładem jest:

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

Teraz część będą: { "dwa", "trzy", "cztery"}