1. Matrices irregulares
Como programador de Java, no solo puede intercambiar las filas de una matriz bidimensional, sino también construir una matriz como desee.
Digamos que desea que la primera fila de una matriz bidimensional tenga una longitud de 10
, y desea que la longitud de la segunda fila sea 50
. ¿Podemos hacer eso? Si podemos.
Primero, necesitamos crear un 'contenedor de contenedores': esta es la primera matriz, que almacenará referencias a matrices de filas. Así es como se hace:
int[][] name = new int[height][];
Simplemente omite la segunda dimensión y la máquina Java crea un contenedor de contenedores. Esto es lo que quedará en la memoria después de ejecutar este código:
Y bueno, ya sabes cómo crear arreglos unidimensionales 🙂
Así es como se verá el código resultante:
|
Matriz bidimensional La fila cero es una matriz de 10 elementos La primera fila es una matriz de 50 elementos |
Acabamos de crear una llamada " matriz irregular ".
Y si ahora queremos mostrar todos los elementos de esta matriz en la pantalla, entonces la length
propiedad de la matriz será útil: después de todo, las longitudes de las filas de la matriz son diferentes.
Por cierto, ¿cómo encuentras la longitud de un 'contenedor de contenedores' en nuestro ejemplo? También es un objeto de matriz, lo que significa que tiene una longitud. La respuesta correcta es matrix.length
.
¿Qué hay de las matrices que componen nuestras filas?matrix[0].length
2. Trabajar con una matriz bidimensional
Suponga que desea mostrar una matriz bidimensional. ¿Cómo haces eso?
Nuestro código se verá así:
|
Crear una matriz Rellenar la matriz con valores Bucle externo que itera sobre las filas de la matriz. Bucle interno que itera sobre las celdas de una sola fila. |
Necesitas dos bucles anidados. A la primera la llamamos exterior y a la segunda interior .
En el bucle externo (la i
variable), recorremos secuencialmente todas las filas (matrices) que componen nuestra matriz bidimensional. Cada valor de i
corresponde a una fila con ese índice.
En el ciclo interno (la j
variable), iteramos sobre todas las celdas de las filas. Gracias al bucle interno, se mostrará en la pantalla una fila que consta de los valores de una matriz unidimensional.
Esto es lo que se mostrará:
Se procesa una fila de la matriz |
|
Se procesan dos filas de la matriz. |
|
Se procesan tres filas de la matriz. |
|
3. Arreglos multidimensionales
Otro dato interesante sobre las matrices, uno que probablemente ya hayas adivinado. Si puedes hacer una matriz bidimensional, ¿puedes hacer una matriz tridimensional?
Sí, puede crear una matriz de cualquier dimensión. Estas matrices se denominan 'multidimensionales'.
Solo por diversión, creemos una matriz multidimensional que tenga 4 dimensiones.
int[][][][] matrix = new int[2][3][4][5];
Este código es demasiado simple, ¿no?
¿Qué pasa si lo creas manualmente?
int[][][][] matrix;
matrix = new int[2][][][]; // Create a 2-element array of references to references to references
for (int i = 0; i < matrix.length; i++)
{
matrix[i] = new int[3][][]; // Create a 3-element array of references to references
for (j = 0; j < matrix[i].length; j++)
{
matrix[i][j] = new int[4][]; // Create a 4-element array of references
for (k = 0; k < matrix[i][j].length; k++)
matrix[i][j][k] = new int[5]; // Create 5-element arrays of integers
}
}
¡Y eso es solo crear la matriz! Entonces también necesitas trabajar con eso de alguna manera.
Tarea adicional: escribir código que muestre todos los valores en una matriz tridimensional.
GO TO FULL VERSION