Czym jest macierz / tablica 2D w Javie?
„Macierz to zbiór liczb ułożonych w ustaloną liczbę wierszy i kolumn”. Zazwyczaj są to liczby rzeczywiste. Ogólnie rzecz biorąc, macierze mogą zawierać tylko liczby (zespolone) złożone i dla uproszczenia użyjemy tutaj tylko liczb całkowitych. Przyjrzyjmy się, jak wygląda macierz. Oto przykład macierzy o 4 wierszach i 4 kolumnach.
Ryc 1: Prosta macierz 4x4

Ryc 2: Macierz[4][4] na ryc. 1 reprezentowana jako tablica 2D w Javie
Deklarowanie i inicjowanie tablicy 2D
Oto kilka różnych sposobów, aby albo zadeklarować tylko rozmiar tablicy, albo zainicjować ją bez podawania rozmiaru.
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" } };
}
}
Przemierzanie tablic 2D
Wszyscy wiemy, jak przemierzać w Javie standardowe tablice. W przypadku tablic 2D również nie jest to trudne. Powszechnie używamy do tego zagnieżdżonych pętli „for”. Niektórzy początkujący mogą zareagować na powyższy koncept zdziwieniem, ale jak tylko zagłębisz się w temat, będziesz w stanie to wdrożyć przy odrobinie praktyki. Spójrz na ten kawałek kodu. Wyświetla tylko liczbę kolumn odpowiadającą każdemu wierszowi, aby ułatwić ci dobre zrozumienie zagadnienia.
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();
}
}
}
Wyświetlone zostanie:
wiersz 0 : kol 0 kol 1 kol 2 kol 3
wiersz 1 : kol 0 kol 1 kol 2 kol 3
wiersz 2 : kol 0 kol 1 kol 2 kol 3
wiersz 3 : kol 0 kol 1 kol 2 kol 3

Jak wydrukować tablicę 2D w Javie?
Po zapoznaniu się z przemierzaniem tablic 2D przyjrzyjmy się kilku sposobom drukowania tablic 2D w Javie.Korzystając z zagnieżdżonej pętli „for”
Jest to najbardziej podstawowy sposób drukowania macierzy w Javie.
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);
}
}
Wyświetlone zostanie:
3 2 1 7
9 11 5 4
6 0 13 17
7 21 14 15
Korzystanie z pętli „for-each”
Oto inny sposób drukowania tablic 2D w Javie za pomocą „pętli foreach”. Jest to specjalny typ pętli w Javie, w którym int[]row zapętli każdy wiersz w macierzy. Natomiast zmienna „element” będzie zawierała każdy element umieszczony na indeksie kolumny poprzez wiersz.
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);
}
}
Wyświetlone zostanie:
3 2 1 7
9 11 5 4
6 0 13 17
7 21 14 15
Korzystanie z metody „Arays.toString()”
Metoda Arrays.toString() w Javie konwertuje każdy przekazany do niej parametr jako pojedynczą tablicę i używa wbudowanej metody do jej wydrukowania. Stworzyliśmy fikcyjną tablicę String 2D do zabawy. Ta sama metoda działa również w przypadku tablic liczb całkowitych. Zachęcamy do przećwiczenia tego zagadnienia.
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);
}
}
Wyświetlone zostanie:
[Cześć, jestem Karen]
[Jestem nowa w Javie]
[Uwielbiam pływać]
[czasami gram na klawiszach]
GO TO FULL VERSION