Java desde Cero Arreglos 2 – Arreglos Bidimensionales

INTRODUCCIÓN

Anteriormente ya hemos explicado que son y como funcionan los arreglos; sin embargo, los arreglos como hemos mencionado son matrices y hasta el momento solo hemos contemplado matrices o arreglos de una sola dimensión, entonces, ¿Qué ocurre con los arreglos de dos dimensiones, o en adelante?, en Java no existen los arreglos bidimensionales por definición, sino que se trata de arreglos dentro de arreglos, siendo que un arreglo de 2 dimensiones puede ser representado como una tabla (aunque no es una tabla) y un arreglo de 3 dimensiones como un cubo y así sucesivamente, siendo que los arreglos de mayores dimensiones representan un verdadero problema al menos en su representación. Un arreglo bidimensional se puede representar de la siguiente forma:

m2.png

DECLARACIÓN

Su declaración de forma implícita sigue la siguiente sintaxis:

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

Quizá una forma sencilla de entenderlo sería que el arreglo principal tendrá 4 sub-arreglos y que cada sub-arreglo tendrá 5 elementos. ¿Podemos declarar un arreglo bidimensional de forma explícita?, sí, pero realmente resultaría muy engorroso, sino observa:

matrix1[0][0]=15;
matrix1[0][1]=21;
matrix1[0][2]=18;
matrix1[0][3]=9;
matrix1[0][4]=15;

matrix1[1][0]=10;
matrix1[1][1]=52;
matrix1[1][2]=17;
matrix1[1][3]=19;
matrix1[1][4]=7;

matrix1[2][0]=19;
matrix1[2][1]=2;
matrix1[2][2]=13;
matrix1[2][3]=17;
matrix1[2][4]=7;

matrix1[3][0]=92;
matrix1[3][1]=13;
matrix1[3][2]=13;
matrix1[3][3]=32;
matrix1[3][4]=41;

También podemos hacerlo de forma explícita de la siguiente forma:

int [][] matrix={{15,21,18,9,15}, {10,52,17,19,7}, {19,2,13,17,7}, {92,13,13,32,41} }

Pero esto resulta quizá sencillo por la cantidad de elementos que alberga el arreglo, imagina ahora si fuera un arreglo de 100×100, definitivamente la forma implícita resulta una mejor opción

RECORRIDO

Obtener una posición específica del arreglo es indicando la posición exacta que estamos buscando:

System.out.println(matrix1[2][0])

Obviamente que debe de existir un valor ya asignado en dicha posición. ¿Cómo podemos recorrer un arreglo bidimensional?, el recorrido se realiza a través de un bucle for anidado, para ello podemos emplear tanto el for convencional como el foreach:

Por ejemplo asignemos los valores a los elementos

for (int i = 0; i < matrix1.length; i++) {
   for(int j =0; j < matrix1[i].length; j++){
      matrix1[i][j]=j+i;
   }
}

Observemos la estructura del bucle for anidado, tanto i como j representan los índices del arreglo y sub-arreglos respectivamente, la estructura se resuelve primero iterando sobre el sub-arreglo manteniendo fijo el valor de i, cuando se ha recorrido todo el sub-arreglo (es decir j) se pasa al siguiente valor de i. Ahora recorramos el arreglo bidimensional pero esta vez haciendo uso del bucle foreach:

for (int[] submatriz : matrix1) {
   for(int elemento : submatriz){
      System.out.println(elemento);
   }
}

Podemos observar que el recorrido es mucho más simplificado solo siempre recordar que deben ser del mismo tipo al elemento que ha de recorrerse.

 

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.