Con respecto a la creación de matriz dinámica en Java

¿Podría aconsejarme cómo crear una matriz dinámica? Una matriz primitiva se puede declarar como

int[] myIntArray = new int[3];

Pero esta vez sé que el tamaño de la matriz es de 3 elementos, pero ¿qué pasa si quiero crear una matriz dinámica? ¿Cómo lo crearé? Por favor, avise.

preguntado el 27 de julio de 12 a las 17:07

6 Respuestas

Una matriz siempre debe inicializarse con un tamaño determinado. Use una Lista si desea tener una colección 'dinámica' y luego conviértala en una matriz si es necesario. La matriz no se puede cambiar de tamaño después de la creación de instancias, mientras que una Lista sí (ignorando las listas no modificables).

Respondido 27 Jul 12, 17:07

Ese tamaño de matriz se puede calcular dinámicamente, pero no se puede cambiar el tamaño de una matriz después de haberla creado. - Luis Wassermann

Puede instanciar una matriz usando una variable, pero una vez instanciada, la matriz se quedará atascada en ese tamaño.

int[] myArrayInt = new int[arraySizeVariable];

Si desea algo que sea realmente dinámico, le sugiero que use un ArrayList en su lugar.

List<Integer> myArrayList = new ArrayList<Integer>();

Respondido 27 Jul 12, 17:07

ArrayLists puede crecer y reducirse dinámicamente:

ArrayList<Integer> list = new ArrayList<Integer>();

//... 
list.add(5);
list.add(1);

//...
int index = list.indexOf(5);
list.remove(index);

Respondido 27 Jul 12, 17:07

use java.lang.reflect.Array

public static Object newInstance(Class<?> componentType, int length) {}

Respondido 27 Jul 12, 17:07

La parte dinámica de la pregunta probablemente se refiere al tamaño, no al tipo, por lo que new int[arraySizeVariable] estaría bien. - cristian semrau

En Java puedes tener todo tipo de grupos dinámicos de elementos. La matriz básica [] seguirá siendo tan estática como en cualquier otro lenguaje similar, por lo que querrá usar alguna implementación de la interfaz Collection.java.

El más básico es un Vector que simplemente contiene algunos objetos, no necesariamente de la misma clase, y crecerá dinámicamente a medida que agregue o elimine elementos de él. Si desea que se ordenen, puede usar una implementación de List.java. Si desea que la colección sea única, puede usar instancias de Set.java.

Respondido 27 Jul 12, 17:07

s/Vector/ArrayList/. Vector está más o menos en desuso. - Luis Wassermann

Sólo dejaré esto aquí javacodegeeks.com/2010/08/… - tiburón

   public int[] createArray(int size){return new int[size];}

Bueno, es un código tonto. Crea una matriz del tamaño que desee. No es ampliable una vez creado. Para eso, debe expandirse manualmente copiando a una matriz más grande cuando su matriz anterior esté llena. O mejor, hazlo con una colección llamada ArrayList, que duplica la capacidad cuando alcanza algún umbral.

Si implementa su propia matriz expandible, será lo mismo que usar ArrayList: ver

Cada instancia de ArrayList tiene una capacidad. La capacidad es el tamaño de la matriz utilizada para almacenar los elementos de la lista. Siempre es al menos tan grande como el tamaño de la lista. A medida que se agregan elementos a una ArrayList, su capacidad aumenta automáticamente. Los detalles de la política de crecimiento no se especifican más allá del hecho de que agregar un elemento tiene un costo de tiempo amortizado constante.

Respondido 27 Jul 12, 17:07

¿podría explicar lo que está sucediendo dentro del código ...! 1 - user1538526

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.