¿Cambiar el tamaño de una matriz manteniendo los elementos actuales en Java?

Resuelto Mihai Bujanca asked hace 12 años • 12 respuestas

He buscado una manera de cambiar el tamaño de una matriz en Java, pero no pude encontrar formas de cambiar el tamaño de la matriz manteniendo los elementos actuales .

Encontré, por ejemplo, un código como int[] newImage = new int[newWidth];, pero esto elimina los elementos almacenados antes.

Mi código básicamente haría esto: cada vez que se agrega un nuevo elemento, la matriz se amplía en 1 . Creo que esto se podría hacer con programación dinámica, pero no estoy seguro de cómo implementarlo.

Mihai Bujanca avatar Nov 02 '12 21:11 Mihai Bujanca
Aceptado

No se puede cambiar el tamaño de una matriz en Java. Necesitarías:

  1. Cree una nueva matriz del tamaño deseado y copie el contenido de la matriz original a la nueva matriz, usandojava.lang.System.arraycopy(...);

  2. Utilice la java.util.ArrayList<T>clase, que hace esto por usted cuando necesite agrandar la matriz. Resume muy bien lo que describe en su pregunta.

  3. Utilice java.util.Arrays.copyOf(...)métodos que devuelvan una matriz más grande, con el contenido de la matriz original.

Steve McLeod avatar Nov 02 '2012 15:11 Steve McLeod

No es agradable, pero funciona:

    int[] a = {1, 2, 3};
    // make a one bigger
    a = Arrays.copyOf(a, a.length + 1);
    for (int i : a)
        System.out.println(i);

como se indicó antes, vaya con ArrayList

jlordo avatar Nov 02 '2012 15:11 jlordo