logo

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;



java porovnávať reťazce
    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));> >}> }>

>

rýchle triedenie java

>

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




hrithik roshan
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]>