Vad är en Matrix / 2D Array i Java?
"En matris är en samling tal ordnade i ett fast antal rader och kolumner." Vanligtvis är dessa reella tal. Generellt sett kan matriser innehålla komplexa tal men för enkelhetens skull kommer vi bara att använda heltal här. Låt oss ta en titt på hur en matris ser ut. Här är ett exempel på en matris med 4 rader och 4 kolumner.

Deklarera och initiera en 2D-array
Här är några olika sätt att antingen bara deklarera storleken på arrayen eller initiera den utan att nämna storleken.
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 Traversal
Vi vet alla hur man går igenom vanliga arrayer i Java. För 2D-matriser är det inte svårt heller. Vi använder vanligtvis kapslade 'för'-loopar för detta. Vissa nybörjare kanske tänker på det som ett främmande koncept, men så fort du gräver djupare i det kommer du att kunna implementera detta med lite övning. Ta en titt på följande utdrag. Den visar bara antalet kolumner som motsvarar varje rad för din grundliga förståelse.
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();
}
}
}
Produktion
rad 0 : kol 0 kol 1 kol 2 kol 3 rad 1 : kol 0 kol 1 kol 2 kol 3 rad 2: kol 0 kol 1 kol 2 kol 3 rad 3: kol 0 kol 1 kol 2 kol 3
Hur man skriver ut en 2D-array i Java?
När du är bekant med 2D-array-traversal, låt oss titta på några sätt att skriva ut 2D-arrayer i Java.Använder kapslad "för" loop
Detta är det mest grundläggande sättet att skriva ut matrisen i 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);
}
}
Produktion
3 2 1 7 9 11 5 4 6 0 13 17 7 21 14 15
Använder "for-each" loop
Här är ett annat sätt att skriva ut 2D-arrayer i Java med " foreach loop" . Detta är en speciell typ av loop som tillhandahålls av Java, där int[]raden kommer att gå igenom varje rad i matrisen. Variabeln "element" kommer att innehålla varje element som placeras i kolumnindex genom raden.
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);
}
}
Produktion
3 2 1 7 9 11 5 4 6 0 13 17 7 21 14 15
Använder metoden "Arays.toString()".
Metoden Arrays.toString() i Java, konverterar varje parameter som skickas till den som en enda array och använder dess inbyggda metod för att skriva ut den. Vi har skapat en dummy String 2D-array att leka med. Samma metod fungerar även för heltalsmatriser. Vi uppmuntrar dig att träna på det för din träning.
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);
}
}
Produktion
[Hej, jag är Karen] [Jag är ny på Java] [Jag älskar att simma] [ibland spelar jag keyboard]
GO TO FULL VERSION