Rôzne spôsoby, ako deklarovať a inicializovať 2-D Array v Jave
Viacrozmerné pole. Najčastejšie používané viacrozmerné polia sú 2-D a 3-D polia. Môžeme povedať, že každé pole vyššej dimenzie je v podstate pole polí. Veľmi častým príkladom 2D poľa je šachovnica. Šachovnica je mriežka obsahujúca 64 štvorcových políčok 1×1. Podobne si môžete vizualizovať 2D pole. V 2D poli je každý prvok spojený s číslom riadka a číslom stĺpca. Prístup k akémukoľvek prvku 2D poľa je podobný prístupu k záznamu súboru Excel pomocou čísla riadka aj čísla stĺpca. 2D polia sú užitočné pri implementácii hry Tic-Tac-Toe, šachu alebo dokonca pri ukladaní obrazových pixelov.
Vyhlásenie 2-D poľa v jazyku Java:
Akékoľvek 2-rozmerné pole možno deklarovať takto:
Syntax:
dátový_typ názov_pola[][]; (ALEBO) typ_údajov[][] názov_poľa;
- data_type: Keďže Java je staticky typovaný jazyk (t. j. očakáva, že jeho premenné budú deklarované skôr, ako im budú môcť byť priradené hodnoty). Zadanie typu údajov teda rozhodne o type prvkov, ktoré bude akceptovať. napr. na ukladanie iba celočíselných hodnôt bude typ údajov deklarovaný ako int. array_name: Je to názov, ktorý je daný 2-D poľu. napr. predmety, žiaci, ovocie, odbor a pod.
Poznámka: Môžeme napísať [ ][ ] za typ_údajov alebo môžeme napísať [ ][ ] za názov_poľa pri deklarovaní 2D poľa.
Java
// java program showing declaration of arrays> import> java.io.*;> > class> GFG {> > public> static> void> main(String[] args)> > {> > > int> [][] integer2DArray;> // 2D integer array> > String[][] string2DArray;> // 2D String array> > double> [][] double2DArray;> // 2D double array> > boolean> [][] boolean2DArray;> // 2D boolean array> > float> [][] float2DArray;> // 2D float array> > double> [][] double2DArray;> // 2D double array> > }> }> |
Rôzne prístupy k inicializácii 2-D poľa v Jave:
data_type[][] array_Name = Nový data_type[no_of_rows][no_of_columns];
Celkový počet prvkov v akomkoľvek 2D poli sa bude rovnať (no_of_rows) * (no_of_columns).
- no_of_rows: Počet riadkov v poli. napr. no_of_rows = 3, pole bude mať tri riadky. no_of_columns: Počet stĺpcov v poli. napr. no_of_columns = 4, pole bude mať štyri stĺpce.
Vyššie uvedená syntax inicializácie poľa priradí predvolené hodnoty všetkým prvkom poľa podľa zadaného typu údajov.
Nižšie je uvedená implementácia rôznych prístupov na inicializáciu 2D polí:
Prístup 1:
Java
// java program to initialize a 2D array> import> java.io.*;> > class> GFG {> > public> static> void> main(String[] args)> > {> > // Declaration along with initialization> > // 2D integer array with 5 rows and 3 columns> > // integer array elements are initialized with 0> > int> [][] integer2DArray => new> int> [> 5> ][> 3> ];> > System.out.println(> > 'Default value of int array element: '> > + integer2DArray[> 0> ][> 0> ]);> > > // 2D String array with 4 rows and 4 columns> > // String array elements are initialized with null> > String[][] string2DArray => new> String[> 4> ][> 4> ];> > System.out.println(> > 'Default value of String array element: '> > + string2DArray[> 0> ][> 0> ]);> > > // 2D boolean array with 3 rows and 5 columns> > // boolean array elements are initialized with false> > boolean> [][] boolean2DArray => new> boolean> [> 4> ][> 4> ];> > System.out.println(> > 'Default value of boolean array element: '> > + boolean2DArray[> 0> ][> 0> ]);> > > // 2D char array with 10 rows and 10 columns> > // char array elements are initialized with> > // 'u0000'(null character)> > char> [][] char2DArray => new> char> [> 10> ][> 10> ];> > System.out.println(> > 'Default value of char array element: '> > + char2DArray[> 0> ][> 0> ]);> > > // First declaration and then initialization> > int> [][] arr;> // declaration> > > // System.out.println('arr[0][0]: '+ arr[0][0]);> > // The above line will throw an error, as we have> > // only declared the 2D array, but not initialized> > // it.> > arr => new> int> [> 5> ][> 3> ];> // initialization> > System.out.println(> 'arr[0][0]: '> + arr[> 0> ][> 0> ]);> > }> }> |
Poznámka: Keď inicializujete 2D pole, musíte vždy zadať prvý rozmer (počet riadkov), ale poskytnutie druhého rozmeru (počet stĺpcov) možno vynechať.
V útržku kódu nižšie sme nešpecifikovali počet stĺpcov. Kompilátor Java je však dostatočne inteligentný na to, aby manipuloval s veľkosťou pomocou kontroly počtu prvkov vo vnútri stĺpcov.
Java
import> java.io.*;> > class> GFG {> > public> static> void> main(String[] args)> > {> > // The line below will throw an error, as the first> > // dimension(no. of rows) is not specified> > int> [][] arr => new> int> [][> 3> ];> > > // The line below will execute without any error, as> > // the first dimension(no. of rows) is specified> > int> [][] arr => new> int> [> 2> ][];> > }> }> |
K akémukoľvek prvku 2D poľa môžete pristupovať pomocou čísel riadkov a čísel stĺpcov.
Prístup 2:
V útržku kódu nižšie sme nešpecifikovali počet riadkov a stĺpcov. Kompilátor Java je však dostatočne inteligentný na to, aby manipuloval s veľkosťou pomocou kontroly počtu prvkov v riadkoch a stĺpcoch.
Java
import> java.io.*;> > class> GFG {> > public> static> void> main(String[] args)> > {> > String[][] subjects = {> > {> 'Data Structures & Algorithms'> ,> > 'Programming & Logic'> ,> 'Software Engineering'> ,> > 'Theory of Computation'> },> // row 1> > > {> 'Thermodynamics'> ,> 'Metallurgy'> ,> > 'Machine Drawing'> ,> > 'Fluid Mechanics'> },> // row2> > > {> 'Signals and Systems'> ,> 'Digital Electronics'> ,> > 'Power Electronics'> }> // row3> > };> > > System.out.println(> > 'Fundamental Subject in Computer Engineering: '> > + subjects[> 0> ][> 0> ]);> > System.out.println(> > 'Fundamental Subject in Mechanical Engineering: '> > + subjects[> 1> ][> 3> ]);> > System.out.println(> > 'Fundamental Subject in Electronics Engineering: '> > + subjects[> 2> ][> 1> ]);> > }> }> |
Výkon
Fundamental Subject in Computer Engineering: Data Structures & Algorithms Fundamental Subject in Mechanical Engineering: Fluid Mechanics Fundamental Subject in Electronics Engineering: Digital Electronics
Prístup 3:
Okrem toho môžeme inicializovať každý prvok poľa samostatne. Pozrite si útržok kódu nižšie:
Java
import> java.io.*;> import> java.util.*;> > class> GFG {> > public> static> void> main(String[] args)> > {> > int> [][] scores => new> int> [> 2> ][> 2> ];> > // Initializing array element at position[0][0],> > // i.e. 0th row and 0th column> > scores[> 0> ][> 0> ] => 15> ;> > // Initializing array element at position[0][1],> > // i.e. 0th row and 1st column> > scores[> 0> ][> 1> ] => 23> ;> > // Initializing array element at position[1][0],> > // i.e. 1st row and 0th column> > scores[> 1> ][> 0> ] => 30> ;> > // Initializing array element at position[1][1],> > // i.e. 1st row and 1st column> > scores[> 1> ][> 1> ] => 21> ;> > > // printing the array elements individually> > System.out.println(> 'scores[0][0] = '> > + scores[> 0> ][> 0> ]);> > System.out.println(> 'scores[0][1] = '> > + scores[> 0> ][> 1> ]);> > System.out.println(> 'scores[1][0] = '> > + scores[> 1> ][> 0> ]);> > System.out.println(> 'scores[1][1] = '> > + scores[> 1> ][> 1> ]);> > // printing 2D array using Arrays.deepToString() method> > System.out.println(> > 'Printing 2D array using Arrays.deepToString() method: '> );> > System.out.println(Arrays.deepToString(scores));> > }> }> |
Výkon
scores[0][0] = 15 scores[0][1] = 23 scores[1][0] = 30 scores[1][1] = 21 Printing 2D array using Arrays.deepToString() method: [[15, 23], [30, 21]]
Prístup 4
Použitie vyššie uvedeného prístupu na inicializáciu poľa by bolo únavnou úlohou, ak je veľkosť 2D poľa príliš veľká. Efektívnym spôsobom je použiť cyklus for na inicializáciu prvkov poľa v prípade veľkého 2D poľa.
Java
import> java.io.*;> > class> GFG {> > public> static> void> main(String[] args)> > {> > int> rows => 80> , columns => 5> ;> > int> [][] marks => new> int> [rows][columns];> > > // initializing the array elements using for loop> > for> (> int> i => 0> ; i for (int j = 0; j marks[i][j] = i + j; } } // printing the first three rows of marks array System.out.println('First three rows are: '); for (int i = 0; i <3; i++) { for (int j = 0; j System.out.printf(marks[i][j] + ' '); } System.out.println(); } } }> |
Výkon
First three rows are: 0 1 2 3 4 1 2 3 4 5 2 3 4 5 6
Poznámka: Môžeme použiť arr. funkcia length na zistenie veľkosti riadkov (1. rozmer) a funkcia arr[0].length na zistenie veľkosti stĺpcov (2. rozmer).
Prístup 5: (Zúbkované polia)
Môže existovať určitý scenár, v ktorom chcete, aby mal každý riadok iný počet stĺpcov. Tento typ poľa sa nazýva Jagged Array.
Java
import> java.io.*;> > class> GFG {> > public> static> void> main(String[] args)> > {> > // declaring a 2D array with 2 rows> > int> jagged[][] => new> int> [> 2> ][];> > > // not specifying the 2nd dimension,> > // and making it as jagged array> > // first row has 2 columns> > jagged[> 0> ] => new> int> [> 2> ];> > // second row has 4 columns> > jagged[> 1> ] => new> int> [> 4> ];> > // Initializing the array> > int> count => 0> ;> > for> (> int> i => 0> ; i // remember to use jagged[i].length instead of // jagged[0].length, since every row has // different number of columns for (int j = 0; j jagged[i][j] = count++; } } // printing the values of 2D Jagged array System.out.println('The values of 2D jagged array'); for (int i = 0; i for (int j = 0; j System.out.printf(jagged[i][j] + ' '); System.out.println(); } } }> |
Výkon
The values of 2D jagged array 0 1 2 3 4 5
Program na pridanie dvoch 2D polí:
Java
import> java.io.*;> import> java.util.*;> > class> GFG {> > public> static> void> main(String[] args)> > {> > int> [][] arr1 = { {> 1> ,> 2> ,> 3> }, {> 4> ,> 5> ,> 6> } };> > int> [][] arr2 = { {> 4> ,> 5> ,> 6> }, {> 1> ,> 3> ,> 2> } };> > int> [][] sum => new> int> [> 2> ][> 3> ];> > > // adding two 2D arrays element-wise> > for> (> int> i => 0> ; i for (int j = 0; j 0].length; j++) { sum[i][j] = arr1[i][j] + arr2[i][j]; } } System.out.println('Resultant 2D array: '); for (int i = 0; i System.out.println(Arrays.toString(sum[i])); } } }> |
Výkon
Resultant 2D array: [5, 7, 9] [5, 8, 8]