Hvad er en Matrix / 2D Array i Java?
"En matrix er en samling af tal arrangeret i et fast antal rækker og kolonner." Normalt er disse reelle tal. Generelt kan matricer indeholde komplekse tal, men for nemheds skyld vil vi kun bruge hele tal her. Lad os se på, hvordan en matrix ser ud. Her er et eksempel på en matrix med 4 rækker og 4 kolonner.

Erklær og initialiser et 2D-array
Her er nogle forskellige måder at enten kun erklære størrelsen af arrayet eller initialisere det uden at nævne størrelsen.
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 ved alle, hvordan man krydser almindelige arrays i Java. For 2D-arrays er det heller ikke svært. Vi bruger almindeligvis indlejrede 'for'-løkker til dette. Nogle begyndere vil måske opfatte det som et fremmed koncept, men så snart du graver dybere ned i det, vil du være i stand til at implementere dette med lidt øvelse. Tag et kig på følgende uddrag. Den viser kun antallet af kolonner, der svarer til hver række for din grundige forstå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
række 0: col 0 col 1 col 2 col 3 række 1: col 0 col 1 col 2 col 3 række 2: col 0 col 1 col 2 col 3 række 3: col 0 col 1 col 2 col 3
Hvordan udskriver man et 2D-array i Java?
Når du er fortrolig med 2D-array-traversal, lad os se på et par måder at udskrive 2D-arrays på i Java.Brug af Nested "for" loop
Dette er den mest grundlæggende måde at udskrive matrixen på 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
Brug af "for-each" loop
Her er en anden måde at udskrive 2D-arrays i Java ved hjælp af " foreach loop ". Dette er en speciel type loop leveret af Java, hvor int[]rækken vil gå gennem hver række i matrixen. Hvorimod variablen "element" vil indeholde hvert element placeret ved kolonneindeks gennem rækken.
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
Brug af metoden "Arays.toString()".
Arrays.toString() -metoden i Java, konverterer hver parameter, der sendes til den, som en enkelt matrix og bruger dens indbyggede metode til at udskrive den. Vi har lavet en dummy String 2D-array til at lege med. Den samme metode virker også for heltalsarrays. Vi opfordrer dig til at øve det til 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, jeg er Karen] [Jeg er ny til Java] [Jeg elsker at svømme] [nogle gange spiller jeg keyboard]
GO TO FULL VERSION