2012-04-22 9 views
9

Nuestra tarea nos pide que usemos una matriz dentada para almacenar los valores de una matriz booleana bidimensional. ¿Existe una clase Java incorporada para la matriz dentada o tendré que crearla manualmente con una matriz de ArrayLists?Java Jagged Array

Respuesta

16

En Java, una matriz 2D es una matriz de objetos de matriz 1D. Cada matriz 1D puede tener diferentes longitudes, lo que significa que obtendrá arreglos dentados de fábrica.

Por ejemplo, el siguiente es perfectamente válido de Java, e imprime 3 5 3 4:

int x[][] = {{0,1,2,3,4},{0,1,2},{0,1,2,3}}; 
    System.out.println(x.length); 
    System.out.println(x[0].length); 
    System.out.println(x[1].length); 
    System.out.println(x[2].length); 
+0

Entonces, si necesito agregar más elementos a estas matrices individuales tendré que redimensionar x [1] por ejemplo en lugar de solo x? –

+1

@Chris: Sí. Por ejemplo 'x [1] = Arrays.copyOf (x [1], newLength);' – NPE

0

En realidad, parece que es posible que desee una implementación de matriz dispersa. Puede obtener un rendimiento mucho mejor si tiene que modificar la matriz. Las operaciones de copia de matriz son bastante costosas. Sparse matrices/arrays in Java