CodeGym /Blog Java /Random-ES /Matriz en Java - Matrices 2D
Autor
Oleksandr Miadelets
Head of Developers Team at CodeGym

Matriz en Java - Matrices 2D

Publicado en el grupo Random-ES

¿Qué es una Matriz / Matriz 2D en Java?

“Una matriz es una colección de números ordenados en un número fijo de filas y columnas”. Por lo general, estos son números reales. En general, las matrices pueden contener números complejos, pero en aras de la simplicidad, aquí solo usaremos números enteros. Echemos un vistazo a cómo se ve una matriz. Aquí hay un ejemplo de una matriz con 4 filas y 4 columnas.Matriz en Java - Matrices 2D - 2
Fig 1: Una matriz simple de 4x4
Para representar esta matriz en Java, podemos usar una matriz bidimensional. Una matriz 2D toma 2 dimensiones, una para la fila y otra para la columna. Por ejemplo, si especifica una matriz de enteros int arr[4][4] , significa que la matriz tendrá 4 filas y 4 columnas. O puede decir que para cada fila habrá 4 columnas. El tamaño total/número de celdas de una matriz será filas*columnas = mxn = 4x4 = 16.Matriz en Java - Matrices 2D - 3
Fig. 2: La matriz[4][4] en la Fig. 1 representada como matriz 2D en Java

Declarar e inicializar una matriz 2D

Aquí hay algunas formas diferentes de declarar solo el tamaño de la matriz o inicializarla sin mencionar el tamaño.

public class Matrices {

	public static void main(String[] args) {

		// declare & initialize 2D arrays for int and string
		int[][] matrix1 = new int[2][2];
		int matrix2[][] = new int[2][3];
           
           //the size of matrix3 will be 4x4
		int[][] matrix3 = { { 3, 2, 1, 7 }, 
					   { 9, 11, 5, 4 }, 
					   { 6, 0, 13, 17 }, 
					   { 7, 21, 14, 15 } };

		String[][] matrix4 = new String[2][2];

           //the size of matrix5 will be 2x3 
           // 3 cols because at max there are 3 columns
		String[][] matrix5 = { { "a", "lion", "meo" },  
				            { "jaguar", "hunt" } };
	}
}

Recorrido de matriz 2D

Todos sabemos cómo atravesar arreglos regulares en Java. Para matrices 2D tampoco es difícil. Comúnmente usamos bucles 'for' anidados para esto. Algunos principiantes pueden pensar que es un concepto extraño, pero tan pronto como profundices en él, podrás implementarlo con algo de práctica. Echa un vistazo al siguiente fragmento. Solo muestra el número de columnas correspondientes a cada fila para su comprensión completa.

public class MatrixTraversal {
	public static void main(String[] args) {

	    int[][] matrix = new int[4][4];
	    for (int i = 0; i < matrix.length; i++) 
	    {   
		 // length returns number of rows
		 System.out.print("row " + i + " : ");		
		 for (int j = 0; j < matrix[i].length; j++) 
		 { 
		    // here length returns # of columns corresponding to current row
		    System.out.print("col " + j + "  ");
		 }
	    System.out.println();
	   }
	}
}
Producción
fila 0: columna 0 columna 1 columna 2 columna 3 fila 1: columna 0 columna 1 columna 2 columna 3 fila 2: columna 0 columna 1 columna 2 columna 3 fila 3: columna 0 columna 1 columna 2 columna 3

¿Cómo imprimir una matriz 2D en Java?

Una vez que esté familiarizado con el recorrido de matrices 2D, veamos algunas formas de imprimir matrices 2D en Java.

Uso del bucle "for" anidado

Esta es la forma más básica de imprimir la matriz en Java.

public class MatrixTraversal {

    public static void printMatrix(int matrix[][])
    {
        for (int i = 0; i < matrix.length; i++) 
	  {   
	    // length returns number of rows		
	    for (int j = 0; j < matrix[i].length; j++) 
	    { 
	      // here length returns number of columns corresponding to current row
		// using tabs for equal spaces, looks better aligned
		// matrix[i][j] will return each element placed at row ‘i',column 'j'
		System.out.print( matrix[i][j]  + "\t"); 
	     }
	     System.out.println();
	   }
	}
	
	public static void main(String[] args) {

		int[][] matrix = { { 3, 2, 1, 7 }, 
					 { 9, 11, 5, 4 }, 
					 { 6, 0, 13, 17 }, 
					 { 7, 21, 14, 15 } };
		printMatrix(matrix);
	}
}
Producción
3 2 1 7 9 11 5 4 6 0 13 17 7 21 14 15

Usando el bucle "para cada uno"

Aquí hay otra forma de imprimir arreglos 2D en Java usando " bucle foreach ". Este es un tipo especial de bucle proporcionado por Java, donde int[]row recorrerá cada fila de la matriz. Mientras que la variable "elemento" contendrá cada elemento colocado en el índice de la columna a través de la fila.

public class MatrixTraversal {

	public static void printMatrix(int matrix[][]){
		for (int [] row : matrix) 
		{   
			// traverses through number of rows		
			for (int element : row) 
			{ 
				// 'element' has current element of row index
				System.out.print( element  + "\t"); 
			}
			System.out.println();
		}
	}
	
	public static void main(String[] args) {

		int[][] matrix = {  { 3, 2, 1, 7 }, 
					  { 9, 11, 5, 4 }, 
					  { 6, 0, 13, 17 }, 
					  { 7, 21, 14, 15 } };
		printMatrix(matrix);
	}
}
Producción
3 2 1 7 9 11 5 4 6 0 13 17 7 21 14 15

Usando el método “Arays.toString()”

El método Arrays.toString() en Java, convierte cada parámetro que se le pasa como una sola matriz y usa su método incorporado para imprimirlo. Hemos creado una matriz ficticia de String 2D para jugar. El mismo método también funciona para matrices enteras. Te animamos a que lo practiques para tu ejercicio.

import java.util.Arrays;
public class MatrixTraversal {
	public static void printMatrix(String matrix[][]){
	
		for (String[] row : matrix) {
			// convert each row to a String before printing
			System.out.println(Arrays.toString(row));
		}
	}
	
	public static void main(String[] args) {

		String [][] matrix = {  { "Hi, I am Karen" }, 
						{ "I'm new to Java"}, 
						{ "I love swimming" }, 
						{ "sometimes I play keyboard"} };
		printMatrix(matrix);
	}
}
Producción
[Hola, soy Karen] [Soy nuevo en Java] [Me encanta nadar] [a veces toco el teclado]

Código Explicación

En la primera iteración, String[]row leerá "Hola, soy Karen" como un Array, lo convertirá en String y luego lo imprimirá. Así es como se llevarán a cabo todas las iteraciones. La utilidad proporcionada aquí es que no tiene que realizar un seguimiento de ningún índice (i, j) o bucles anidados.

Conclusión

Los arreglos 2D en Java son los más simples de los arreglos multidimensionales. Al final de este artículo, esperamos que no tenga miedo de usarlos, sino que esté listo para arremangarse para un trabajo serio. Puede ejecutar todos estos códigos de muestra o depurar línea por línea según su conveniencia. Pero al final, nos gustaría advertir (como siempre) que la habilidad viene con mucha práctica y paciencia. Espero que tenga una experiencia de aprendizaje divertida con matrices 2D en Java. ¡Buena suerte!
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION