CodeGym /Java Blog /Willekeurig /Matrix in Java - 2D-arrays
John Squirrels
Niveau 41
San Francisco

Matrix in Java - 2D-arrays

Gepubliceerd in de groep Willekeurig

Wat is een matrix / 2D-array in Java?

"Een matrix is ​​een verzameling getallen gerangschikt in een vast aantal rijen en kolommen." Meestal zijn dit reële getallen. Over het algemeen kunnen matrices complexe getallen bevatten, maar voor de eenvoud gebruiken we hier alleen hele getallen. Laten we eens kijken hoe een matrix eruit ziet. Hier is een voorbeeld van een matrix met 4 rijen en 4 kolommen.Matrix in Java - 2D-arrays - 2
Fig 1: Een eenvoudige 4x4 matrix
Om deze matrix in Java weer te geven, kunnen we een 2-dimensionale matrix gebruiken. Een 2D-array heeft 2 dimensies, één voor de rij en één voor de kolom. Als u bijvoorbeeld een integer-array int arr[4][4] opgeeft , betekent dit dat de matrix 4 rijen en 4 kolommen heeft. Of je kunt zeggen dat er voor elke rij 4 kolommen zijn. De totale grootte / het aantal cellen in een matrix is ​​rijen*kolommen = mxn = 4x4 = 16.Matrix in Java - 2D-arrays - 3
Fig 2: De matrix[4][4] in Fig 1 weergegeven als 2D Array in Java

Een 2D-array declareren en initialiseren

Hier zijn enkele verschillende manieren om alleen de grootte van de array te declareren, of om deze te initialiseren zonder de grootte te vermelden.

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" } };
	}
}

2D-arraydoorgang

We weten allemaal hoe we reguliere arrays in Java moeten doorkruisen. Voor 2D-arrays is het ook niet moeilijk. Hiervoor gebruiken we meestal geneste 'for'-lussen. Sommige beginners zien het misschien als een buitenaards concept, maar zodra je er dieper op ingaat, kun je dit met wat oefening implementeren. Kijk eens naar het volgende fragment. Het geeft alleen het aantal kolommen weer dat overeenkomt met elke rij voor uw grondige begrip.

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();
	   }
	}
}
Uitgang
rij 0 : col 0 col 1 col 2 col 3 rij 1 : col 0 col 1 col 2 col 3 rij 2 : col 0 col 1 col 2 col 3 rij 3 : col 0 col 1 col 2 col 3

Hoe een 2D-array in Java afdrukken?

Nadat u bekend bent met 2D-array-traversal, gaan we kijken naar een paar manieren om 2D-arrays in Java af te drukken.

Geneste "for" -lus gebruiken

Dit is de eenvoudigste manier om de matrix in Java af te drukken.

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);
	}
}
Uitgang
3 2 1 7 9 11 5 4 6 0 13 17 7 21 14 15

Met behulp van "voor-elke" lus

Hier is een andere manier om 2D-arrays in Java af te drukken met behulp van " foreach loop ". Dit is een speciaal type lus geleverd door Java, waarbij de int[]row door elke rij in de matrix loopt. Terwijl de variabele "element" elk element bevat dat op de kolomindex door de rij is geplaatst.

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);
	}
}
Uitgang
3 2 1 7 9 11 5 4 6 0 13 17 7 21 14 15

Gebruik de methode "Arays.toString()".

De methode Arrays.toString() in Java converteert elke parameter die eraan wordt doorgegeven als een enkele array en gebruikt de ingebouwde methode om deze af te drukken. We hebben een dummy String 2D-array gemaakt om mee te spelen. Dezelfde methode werkt ook voor arrays met gehele getallen. We moedigen u aan om het te oefenen voor uw oefening.

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);
	}
}
Uitgang
[Hallo, ik ben Karen] [Ik ben nieuw op Java] [Ik hou van zwemmen] [soms speel ik keyboard]

Code Uitleg

In de eerste iteratie leest String[]row "Hallo, ik ben Karen" als een array, converteert deze naar een string en drukt deze vervolgens af. Dat is hoe alle iteraties zullen plaatsvinden. Het hulpprogramma dat hier wordt geboden, is dat u geen indexen (i, j) of geneste lussen hoeft bij te houden.

Conclusie

2D-arrays in Java zijn de meest eenvoudige van de multidimensionale arrays. Aan het einde van dit artikel hopen we dat je niet bang bent om ze te gebruiken, maar klaar bent om de handen uit de mouwen te steken voor serieus werk. U kunt al deze voorbeeldcodes uitvoeren of regel voor regel debuggen wanneer het u uitkomt. Maar uiteindelijk willen we (zoals altijd) adviseren dat vaardigheid gepaard gaat met veel oefening en geduld. Ik hoop dat je veel leerervaring hebt met 2D-arrays in Java. Succes!
Opmerkingen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION