Arrays de longitud variable (dinámica) en Java

Me preguntaba cómo inicializar una matriz de enteros de modo que su tamaño y valores cambien a lo largo de la ejecución de mi progtwig, ¿alguna sugerencia?

Sí: use ArrayList .

En Java, las matrices “normales” son de tamaño fijo. Tienes que darles un tamaño y no puedes expandirlos o contraerlos. Para cambiar el tamaño, debe crear una nueva matriz y copiar los datos que desee, lo que es ineficiente y le resulta doloroso.

Afortunadamente, hay todo tipo de clases integradas que implementan estructuras de datos comunes y otras herramientas útiles también. Deberá verificar la API de Java 6 para obtener una lista completa de ellos.

Una advertencia: ArrayList solo puede contener objetos (p. Ej., Enteros), no primitivos (p. Ej., Enteros). En la mayoría de los casos, el autoboxing / autounboxing se encargará de esto en silencio, pero podrías tener un comportamiento extraño dependiendo de lo que estés haciendo.

Las matrices en Java son de tamaño fijo. Lo que necesitaría es una ArrayList, una de las colecciones más valiosas disponibles en Java.

En lugar de

 Integer[] ints = new Integer[x] 

tu usas

 List ints = new ArrayList(); 

Luego, para cambiar la lista, utilice ints.add(y) e ints.remove(z) entre muchos otros métodos útiles que puede encontrar en los Javadocs apropiados.

Recomiendo estudiar las clases de Colecciones disponibles en Java, ya que son muy potentes y te dan mucha funcionalidad incorporada que los novatos de Java tienden a reescribir innecesariamente.

Las matrices son de tamaño fijo una vez instanciadas. Puedes usar una lista en su lugar.

Autoboxing hace que una Lista sea utilizable de forma similar a una matriz, puede poner simplemente valores int en ella:

 List list = new ArrayList(); list.add(1); list.add(2); list.add(3); 

No estoy de acuerdo con las respuestas anteriores que sugieren ArrayList , porque ArrayList no es una matriz dinámica sino una lista respaldada por una matriz. La diferencia es que no puedes hacer lo siguiente:

 ArrayList list = new ArrayList(4); list.put(3,"Test"); 

Le dará una excepción IndexOutOfBoundsException porque todavía no hay ningún elemento en esta posición aunque la matriz de respaldo permita tal adición. Por lo tanto, debe usar una implementación de matriz extensible personalizada, como lo sugiere @ randy-lance

  1. Se recomienda usar la Lista para tratar el tamaño de pequeña escala.

  2. Si tiene una gran cantidad de números, NUNCA use List y autoboxing,

    Lista de lista

Para cada int único, se crea automáticamente un nuevo entero. Le resultará cada vez más lento cuando aumente el tamaño de la lista. Estos enteros son objetos innecesarios. En este caso, usar un tamaño estimado sería mejor,

 int[] array = new int[ESTIMATED_SIZE]; 
 Simple code for dynamic array. In below code then array will become full of size we copy all element to new double size array(variable size array).sample code is below public class DynamicArray { static int []increaseSizeOfArray(int []arr){ int []brr=new int[(arr.length*2)]; for (int i = 0; i < arr.length; i++) { brr[i]=arr[i]; } return brr; } public static void main(String[] args) { int []arr=new int[5]; for (int i = 0; i < 11; i++) { if (i
		      	

¿Qué hay de usar una List lugar? Por ejemplo, ArrayList

No puedes cambiar el tamaño de una matriz. Sin embargo, puede crear una nueva matriz con el tamaño correcto y copiar los datos de la matriz anterior a la nueva.

Pero su mejor opción es usar IntList desde jacarta commons. ( aquí )

Funciona igual que una lista, pero ocupa menos espacio y es más eficiente que eso, porque almacena int en lugar de almacenar objetos wrapper sobre int (eso es lo que es la clase Integer).

Respondí esta pregunta y no, no necesitas una lista de arrays ni ninguna otra cosa, esta era una tarea y la completé para que las matrices puedan boost de tamaño. Aquí está el enlace Cómo usar Java Dynamic Array y aquí está el enlace para mi pregunta que respondí Java Java arrays