A menudo nos encontramos con arrays 2D donde la mayor parte de la array está vacía. Dado que el espacio es un gran problema, intentamos diferentes cosas para reducir el espacio. Una de esas soluciones es usar una array irregular cuando conocemos la longitud de cada fila en la array, pero el problema surge cuando no conocemos específicamente la longitud de cada una de las filas. Aquí usamos ArrayList ya que se desconoce la longitud.
El siguiente es un programa Java para demostrar el concepto anterior.
// Java code to demonstrate the concept of // array of ArrayList import java.util.*; public class Arraylist { public static void main(String[] args) { int n = 5; // Here al is an array of arraylist having // n number of rows.The number of columns on // each row depends on the user. // al[i].size() will give the size of the // i'th row ArrayList<Integer>[] al = new ArrayList[n]; // initializing for (int i = 0; i < n; i++) { al[i] = new ArrayList<Integer>(); } // We can add any number of columns to each // rows as per our wish al[0].add(1); al[0].add(2); al[1].add(5); al[2].add(10); al[2].add(20); al[2].add(30); al[3].add(56); al[4].add(34); al[4].add(67); al[4].add(89); al[4].add(12); for (int i = 0; i < n; i++) { for (int j = 0; j < al[i].size(); j++) { System.out.print(al[i].get(j) + " "); } System.out.println(); } } }
Producción :
1 2 5 10 20 30 56 34 67 89 12
El código anterior funciona bien, pero muestra la siguiente advertencia.
prog.java:15: warning: [unchecked] unchecked conversion ArrayList[] al = new ArrayList[n]; ^ required: ArrayList[] found: ArrayList[] 1 warning
La advertencia viene básicamente debido a la línea de abajo.
ArrayList<Integer>[] al = new ArrayList[n];
¿Cómo arreglar la advertencia anterior?
No podemos usar una array de ArrayList sin previo aviso. Básicamente necesitamos usar ArrayList de ArrayList .