Saltar la navegación

4.- Arrays multidimensionales.

Caso práctico

Fotografía de María.
Ministerio de Educación (CC BY-NC)

Ana sigue dándole vueltas a como almacenar los diferentes datos del pedido, y sobre todo, sobre como procesar los artículos, dado que los artículos del pedido pueden ser más de uno. Ha pensado en crear primero una clase para almacenar los datos del pedido, llamada Pedido, donde cada dato del pedido sea un atributo de la clase. Pero claro, los artículos son más de uno y no puede saber cuantos atributos necesitará.

Para almacenar los artículos ha pensado en crear una clase llamada Articulo donde se meterían todos los datos de cada artículo, y después en la clase Pedido poner un array de artículos. Pero no lo tiene claro y ha decidido preguntar a su tutora, María.

¿Qué estructura de datos utilizarías para almacenar los píxeles de una imagen digital? Normalmente las imágenes son cuadradas así que una de las estructuras más adecuadas es la matriz. En la matriz cada valor podría ser el color de cada píxel. Pero, ¿qué es una matriz a nivel de programación? Pues es un array con dos dimensiones, o lo que es lo mismo, un array cuyos elementos son arrays de números.

Los arrays multidimensionales están en todos los lenguajes de programación actuales, y obviamente también en Java. La forma de crear un array de dos dimensiones en Java es la siguiente:

int[][] a2d=new int[4][5];

El código anterior creará un array de dos dimensiones, o lo que es lo mismo, creará un array que contendrá 4 arrays de 5 números cada uno. Veámoslo con un ejemplo gráfico:

Imagen en la que se muestra visualmente como un array de dos dimensiones es en realidad un array en el que cada posición es otro array. En la imagen se ve un array donde la primera dimensión es 4 (contiene 4 arrays), y la segunda dimensión es 5 (cada array contiene un array de 5 elementos).
Salvador Romero Villegas (CC BY-NC)

Al igual que con los arrays de una sola dimensión, los arrays multidimensionales deben declararse y crearse. Podremos hacer arrays multidimensionales de todas las dimensiones que queramos y de cualquier tipo. En ellos todos los elementos del array serán del mismo tipo, como en el caso de los arrays de una sola dimensión. La declaración comenzará especificando el tipo o la clase de los elementos que forman el array, después pondremos tantos corchetes como dimensiones tenga el array y por último el nombre del array, por ejemplo:

int [][][] arrayde3dim; 

La creación es igualmente usando el operador new, seguido del tipo y los corchetes, en los cuales se especifica el tamaño de cada dimensión:

arrayde3dim=new int[2][3][4];

Todo esto, como ya has visto en un ejemplo anterior, se puede escribir en una única sentencia.

Punto que compone una imagen digital.

Estructura matemática compuesta de datos numéricos dispuestos en filas y columnas, similar a una tabla.

Autoevaluación

Completa con los números que faltan:

int[][][] k=new int[10][11][12]; 


El array anterior es de dimensiones, y tiene un total de números enteros.

Habilitar JavaScript