2012-05-02 13 views
8

¿Hay algún método que copie una sección de una matriz (no una lista de matrices) y haga una nueva matriz a partir de ella?Sección de copia de Java de la matriz

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

y se crea una nueva matriz de ella:

[1,2,3] 

¿Hay una línea/métodos que lo hará?

+0

duplicado posible de [obtener sólo una parte de un array en Java?] (http://stackoverflow.com/questions/11001720/get-only-part-of-an-array-in-java) – 32cupo

Respuesta

13

Aquí hay un Java 1.4 compatible 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); 

Usted puede hacer esto en una sola línea, pero que no tendría una referencia a la resultado.

Para realizar una sola línea, usted podría refactorizar esto en un método:

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

entonces llaman así:

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

int [] holder = new int[size]; 

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

donde 0 significa el índice de matriz de origen desde donde debe comenzar el copiado. y

tamaño representa el número de operaciones de copia. Que puedes cambiar de acuerdo a tu necesidad.

copyOfRange de Arrays está allí y muchas otras maneras por las cuales esto se puede lograr

+2

+1 para su comentario. – Lion

+1

Falta un argumento porque requiere otra int para destinationPosition. –

5

Hay un método pre-existente en el java.util.Arrays: newArray = Arrays.copyOfRange(myArray, startindex, endindex). O bien, podría fácilmente escribir su propio método:

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

Como otros han dicho, puede utilizar el método Arrays.copyOfRange . Un ejemplo es:

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

Ahora parte habrá: { "dos", "tres", "cuatro"}

Cuestiones relacionadas