CodeGym /Java-Blog /Germany /Matrix in Java – 2D-Arrays
Autor
Oleksandr Miadelets
Head of Developers Team at CodeGym

Matrix in Java – 2D-Arrays

Veröffentlicht in der Gruppe Germany

Was ist eine Matrix / ein 2D-Array in Java?

„Eine Matrix ist eine Sammlung von Zahlen, die in einer festen Anzahl von Zeilen und Spalten angeordnet sind.“ Normalerweise handelt es sich dabei um reelle Zahlen. Im Allgemeinen können Matrizen komplexe Zahlen enthalten, aber der Einfachheit halber werden wir hier nur ganze Zahlen verwenden. Schauen wir uns einmal an, wie eine Matrix aussieht. Hier ist ein Beispiel für eine Matrix mit 4 Zeilen und 4 Spalten. Matrix in Java – 2D-Arrays – 2

Abb. 1: Eine einfache 4x4-Matrix

Um diese Matrix in Java darzustellen, können wir ein zweidimensionales Array verwenden. Ein 2D-Array hat zwei Dimensionen, eine für die Zeile und eine für die Spalte. Wenn du zum Beispiel ein ganzzahliges Array int arr[4][4] anlegst, bedeutet das, dass die Matrix vier Zeilen und vier Spalten haben wird. Oder du kannst sagen, dass es für jede Zeile vier Spalten geben wird. Die Gesamtgröße/Anzahl der Zellen in einer Matrix ist Zeilen*Spalten = mxn = 4x4 = 16. Matrix in Java – 2D-Arrays – 3

Abb. 2: Die matrix[4][4] in Abb. 1 dargestellt als 2D-Array in Java

Deklarieren und Initialisieren eines 2D-Arrays

Hier sind einige Möglichkeiten, entweder nur die Größe des Arrays zu deklarieren oder es zu initialisieren, ohne die Größe vorzugeben.

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-Array durchlaufen

Wir alle wissen, wie man in Java gewöhnliche Arrays durchläuft. Für 2D-Arrays ist das auch nicht schwer. Hierfür verwenden wir in der Regel verschachtelte „for“-Schleifen. Manchen Anfängern mag dieses Konzept fremd vorkommen, aber sobald du dich näher damit beschäftigst, wirst du es mit etwas Übung umsetzen können. Sieh dir den folgenden Codeschnipsel an. Zum besseren Verständnis wird nur die Anzahl der Spalten angezeigt, die zu jeder Zeile gehören.

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();
	   }
	}
}
Ausgabe
row 0 : col 0 col 1 col 2 col 3 row 1 : col 0 col 1 col 2 col 3 row 2 : col 0 col 1 col 2 col 3 row 3 : col 0 col 1 col 2 col 3
Matrix in Java – 2D-Arrays - 3

Wie gebe ich ein 2D-Array in Java aus?

Nachdem du dich mit dem Durchlaufen von 2D-Arrays vertraut gemacht hast, schauen wir uns ein paar Möglichkeiten an, 2D-Arrays in Java auszugeben.

Verschachtelte „for“-Schleife verwenden

Dies ist die einfachste Art, die Matrix in Java auszugeben.

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

„for-each“-Schleife verwenden

Hier ist eine weitere Möglichkeit, 2D-Arrays in Java mit der foreach-Schleife auszugeben. Dies ist eine spezielle Art von Schleife, die Java anbietet, bei der int[]row jede Zeile der Matrix in einer Schleife durchläuft. Die Variable „element“ hingegen enthält jedes Element, das am Spaltenindex der Zeile steht.

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

Methode „Arrays.toString()“ verwenden

Die Methode Arrays.toString() in Java wandelt jeden Parameter, der ihr übergeben wird, in ein einzelnes Array um und verwendet die eingebaute Methode, um es auszugeben. Wir haben ein 2D-String-Array zu Übungszwecken erstellt. Die gleiche Methode funktioniert auch für ganzzahlige Arrays. Probiere es als Übung am besten selbst einmal aus.

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);
	}
}
Ausgabe
[Hallo, ich bin Karen] [Ich bin neu bei Java] [Ich liebe Schwimmen] [Manchmal spiele ich Keyboard]

Code-Erläuterung

In der ersten Iteration liest String[]row "Hallo, ich bin Karen" als Array, wandelt es in einen String um und gibt es dann aus. So werden alle Iterationen ablaufen. Der Vorteil dabei ist, dass du keine Indizes (i, j) oder verschachtelte Schleifen im Auge behalten musst.

Fazit

2D-Arrays in Java sind die einfachsten der mehrdimensionalen Arrays. Wir hoffen, dass du am Ende dieses Artikels keine Angst mehr davor hast, sie zu benutzen, sondern bereit bist, die Ärmel hochzukrempeln und ernsthaft damit zu arbeiten. Du kannst alle diese Beispielcodes ausführen oder Zeile für Zeile debuggen, wie es dir beliebt. Aber am Ende möchten wir (wie immer) darauf hinweisen, dass man mit viel Übung und Geduld zum Meister wird. Ich wünsche dir viel Spaß beim Lernen mit 2D-Arrays in Java. Viel Erfolg!
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION