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.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]
GO TO FULL VERSION