Array-Basics v Javě Vícerozměrná pole lze jednoduchými slovy definovat jako pole polí. Data ve vícerozměrných polích jsou uložena v tabulkové formě (v řádkovém hlavním pořadí).
Syntax:
datový typ [1. rozměr][2. rozměr][].[N. rozměr] název_pole = nový datový_typ [velikost1][velikost2]…[velikostN];
kde:
- datový typ : Typ dat, která mají být uložena v poli. Například: int, char atd.
- dimenze : Dimenze vytvořeného pole. Například: 1D, 2D atd.
- název_pole : Název pole
- velikost1, velikost2, …, velikostN : Velikosti rozměrů resp.
Příklady:
Two dimensional array: int[][] twoD_arr = new int[10][20]; Three dimensional array: int[][][] threeD_arr = new int[10][20][30];>
Velikost vícerozměrných polí : Celkový počet prvků, které lze uložit do vícerozměrného pole, lze vypočítat vynásobením velikosti všech rozměrů.
Například: Pole int[][] x = nový int[10][20] lze uložit celkem (10*20) = 200 prvků. Podobně pole int[][][] x = nový int[5][10][20] lze uložit celkem (5*10*20) = 1000 prvků.
Aplikace Multi-Dimensional Array
● Vícerozměrná pole se používají k ukládání dat v tabulkové formě. Například uložení čísla hodu a známek studenta lze snadno provést pomocí vícerozměrných polí. Dalším běžným použitím je ukládání obrázků do 3D polí.
● V otázkách dynamického programování se používají vícerozměrná pole, která se používají k reprezentaci stavů problému.
● Kromě toho mají také aplikace v mnoha standardních algoritmických problémech, jako jsou: násobení matic, reprezentace matice sousednosti v grafech, problémy s vyhledáváním v mřížce
omezení elektronického bankovnictví
Dvourozměrné pole (2D-Array)
Dvourozměrné pole je nejjednodušší formou vícerozměrného pole. Dvourozměrné pole lze pro snazší pochopení vnímat jako pole jednorozměrného pole.
Nepřímá metoda prohlášení:
- Deklarace – Syntaxe:
data_type[][] array_name = new data_type[x][y]; For example: int[][] arr = new int[10][20];>
- Inicializace – syntaxe:
array_name[row_index][column_index] = value; For example: arr[0][0] = 1;>
Příklad: 1
Jáva
import> java.io.*;> public> class> GFG {> > public> static> void> main(String[] args)> > {> > int> [][] arr => new> int> [> 10> ][> 20> ];> > arr[> 0> ][> 0> ] => 1> ;> > System.out.println(> 'arr[0][0] = '> + arr[> 0> ][> 0> ]);> > }> }> |
>
>Výstup
arr[0][0] = 1>
Příklad: Implementace 2D pole s výchozími hodnotami s maticí 4*4
Jáva
public> class> TwoDArray {> > public> static> void> main(String[] args) {> > int> rows => 4> ;> > int> columns => 4> ;> > int> [][] array => new> int> [rows][columns];> > int> value => 1> ;> > for> (> int> i => 0> ; i for (int j = 0; j array[i][j] = value; value++; } } System.out.println('The 2D array is: '); for (int i = 0; i for (int j = 0; j System.out.print(array[i][j] + ' '); } System.out.println(); } } }> |
>
>Výstup
The 2D array is: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16>
Vysvětlení:
- Počet řádků a sloupců se určuje pomocí proměnných řádky a sloupce. 2D pole je vytvořeno pomocí operátoru new, který alokuje paměť pro pole. Velikost pole je určena řádky a sloupci.
Přímý způsob deklarace: Syntax:
data_type[][] array_name = { {valueR1C1, valueR1C2, ....}, {valueR2C1, valueR2C2, ....} }; For example: int[][] arr = {{1, 2}, {3, 4}};>
Příklad:
Jáva
import> java.io.*;> class> GFG {> > public> static> void> main(String[] args)> > {> > int> [][] arr = { {> 1> ,> 2> }, {> 3> ,> 4> } };> > for> (> int> i => 0> ; i <> 2> ; i++)> > for> (> int> j => 0> ; j <> 2> ; j++)> > System.out.println(> 'arr['> + i +> ']['> + j +> '] = '> > + arr[i][j]);> > }> }> |
>
>Výstup
arr[0][0] = 1 arr[0][1] = 2 arr[1][0] = 3 arr[1][1] = 4>
Přístup k prvkům dvourozměrných polí
Prvky ve dvourozměrných polích jsou běžně označovány x[i][j] kde „i“ je číslo řádku a „j“ je číslo sloupce.
Syntax:
x[row_index][column_index]>
Například:
int[][] arr = new int[10][20]; arr[0][0] = 1;>
Výše uvedený příklad představuje prvek přítomný v prvním řádku a prvním sloupci. Poznámka : V polích, pokud je velikost pole N. Jeho index bude od 0 do N-1. Proto pro row_index 2 je skutečné číslo řádku 2+1 = 3. Příklad:
Jáva
import> java.io.*;> class> GFG {> > public> static> void> main(String[] args)> > {> > int> [][] arr = { {> 1> ,> 2> }, {> 3> ,> 4> } };> > System.out.println(> 'arr[0][0] = '> + arr[> 0> ][> 0> ]);> > }> }> |
>
>
ridhima tiwariVýstup
arr[0][0] = 1>
Reprezentace 2D pole v tabulkovém formátu:
Dvourozměrné pole lze vnímat jako tabulku s „x“ řádky a „y“ sloupci, kde se číslo řádku pohybuje od 0 do (x-1) a číslo sloupce je od 0 do (y-1). Níže je zobrazeno dvourozměrné pole „x“ se 3 řádky a 3 sloupci:
Tisk 2D pole v tabulkovém formátu:
Pro výstup všech prvků dvourozměrného pole použijte vnořené smyčky for. K tomu jsou vyžadovány dvě smyčky for, jedna pro procházení řádků a další pro procházení sloupců.
Příklad:
Jáva
import> java.io.*;> class> GFG {> > public> static> void> main(String[] args)> > {> > int> [][] arr = { {> 1> ,> 2> }, {> 3> ,> 4> } };> > for> (> int> i => 0> ; i <> 2> ; i++) {> > for> (> int> j => 0> ; j <> 2> ; j++) {> > System.out.print(arr[i][j] +> );> > }> > System.out.println();> > }> > }> }> |
>
>Výstup
1 2 3 4>
Příklad: Implementace 2D pole se vstupem uživatele
Jáva
řetězec je prázdný
import> java.util.Scanner;> public> class> Main {> > public> static> void> main(String[] args)> > {> > Scanner scan => new> Scanner(System.in);> > System.out.print(> 'Enter number of rows: '> );> > int> rows = scan.nextInt();> > System.out.print(> 'Enter number of columns: '> );> > int> columns = scan.nextInt();> > int> [][] multidimensionalArray=> new> int> [rows][columns];> > // Now you can use the array like a regular> > // 2-dimensional array> > for> (> int> i => 0> ; i for (int j = 0; j multidimensionalArray[i][j]= (i + 1) * (j + 1); } } for (int i = 0; i for (int j = 0; j System.out.print(multidimensionalArray[i][j]+ ' '); } System.out.println(); } scan.close(); } }> |
>
>
Výstup
Enter number of rows: 3 Enter number of columns: 3 1 2 3 2 4 6 3 6 9>
- Tento kód vyzve uživatele k zadání počtu řádků a sloupců pro 2-rozměrné pole. Třída Scanner se používá ke čtení uživatelského vstupu. Poté vytvoří 2-rozměrné pole celých čísel se zadaným počtem řádků a sloupců a každému prvku pole přiřadí i*j.
- Pokud chcete vytvořit vícerozměrné pole s více než dvěma rozměry, můžete použít stejný přístup k vytvoření pole polí. Chcete-li například vytvořit 3-rozměrné pole, můžete vytvořit pole 2-rozměrných polí.
Trojrozměrné pole (3D-Array)
Trojrozměrné pole je komplexní forma vícerozměrného pole. Na trojrozměrné pole lze pro snadnější pochopení pohlížet jako na pole dvourozměrného pole.
Nepřímá metoda prohlášení:
- Deklarace – Syntaxe:
data_type[][][] array_name = new data_type[x][y][z]; For example: int[][][] arr = new int[10][20][30];>
- Inicializace – syntaxe:
array_name[array_index][row_index][column_index] = value; For example: arr[0][0][0] = 1;>
Příklad:
Jáva
import> java.io.*;> class> GFG {> > public> static> void> main(String[] args)> > {> > int> [][][] arr => new> int> [> 10> ][> 20> ][> 30> ];> > arr[> 0> ][> 0> ][> 0> ] => 1> ;> > System.out.println(> 'arr[0][0][0] = '> + arr[> 0> ][> 0> ][> 0> ]);> > }> }> |
>
>Výstup
arr[0][0][0] = 1>
Přímý způsob deklarace: Syntax:
data_type[][][] array_name = { { {valueA1R1C1, valueA1R1C2, ....}, {valueA1R2C1, valueA1R2C2, ....} }, { {valueA2R1C1, valueA2R1C2, ....}, {valueA2R2C1, valueA2R2C2, ....} } }; For example: int[][][] arr = { {{1, 2}, {3, 4}}, {{5, 6}, {7, 8}} };>
Příklad:
Jáva
import> java.io.*;> class> GFG {> > public> static> void> main(String[] args)> > {> > int> [][][] arr = { { {> 1> ,> 2> }, {> 3> ,> 4> } }, { {> 5> ,> 6> }, {> 7> ,> 8> } } };> > for> (> int> i => 0> ; i <> 2> ; i++)> > for> (> int> j => 0> ; j <> 2> ; j++)> > for> (> int> z => 0> ; z <> 2> ; z++)> > System.out.println(> 'arr['> + i> > +> ']['> > + j +> ']['> > + z +> '] = '> > + arr[i][j][z]);> > }> }> |
>
jak zřetězit řetězce v javě
>Výstup
arr[0][0][0] = 1 arr[0][0][1] = 2 arr[0][1][0] = 3 arr[0][1][1] = 4 arr[1][0][0] = 5 arr[1][0][1] = 6 arr[1][1][0] = 7 arr[1][1][1] = 8>
Přístup k prvkům trojrozměrných polí
Prvky v trojrozměrných polích jsou běžně označovány jako x[i][j][k] kde „i“ je číslo pole, „j“ je číslo řádku a „k“ je číslo sloupce.
Syntax:
x[array_index][row_index][column_index]>
Například:
int[][][] arr = new int[10][20][30]; arr[0][0][0] = 1;>
Výše uvedený příklad představuje prvek přítomný v prvním řádku a prvním sloupci prvního pole v deklarovaném 3D poli.
Poznámka : V polích, pokud je velikost pole N. Jeho index bude od 0 do N-1. Proto pro row_index 2 je skutečné číslo řádku 2+1 = 3.
Příklad:
Jáva
import> java.io.*;> class> GFG {> > public> static> void> main(String[] args)> > {> > int> [][][] arr = { { {> 1> ,> 2> }, {> 3> ,> 4> } }, { {> 5> ,> 6> }, {> 7> ,> 8> } } };> > System.out.println(> 'arr[0][0][0] = '> + arr[> 0> ][> 0> ][> 0> ]);> > }> }> |
>
>Výstup
arr[0][0][0] = 1>
Reprezentace 3D pole v tabulkovém formátu:
Na trojrozměrné pole lze nahlížet jako na tabulku polí s „x“ řádky a „y“ sloupci, kde se číslo řádku pohybuje od 0 do (x-1) a číslo sloupce je od 0 do (y-1). Níže je zobrazeno trojrozměrné pole se 3 poli obsahujícími 3 řádky a 3 sloupce:
Tisk 3D pole v tabulkovém formátu:
Pro výstup všech prvků trojrozměrného pole použijte vnořené smyčky for. K tomu jsou zapotřebí tři smyčky for, jedna pro procházení polí, druhá pro procházení řádků a další pro procházení sloupců.
Příklad:
Jáva
import> java.io.*;> class> GFG {> > public> static> void> main(String[] args)> > {> > int> [][][] arr = { { {> 1> ,> 2> }, {> 3> ,> 4> } },> > { {> 5> ,> 6> }, {> 7> ,> 8> } } };> > for> (> int> i => 0> ; i <> 2> ; i++) {> > for> (> int> j => 0> ; j <> 2> ; j++) {> > for> (> int> k => 0> ; k <> 2> ; k++) {> > System.out.print(arr[i][j][k] +> );> > }> > System.out.println();> > }> > System.out.println();> > }> > }> }> |
>
>Výstup
1 2 3 4 5 6 7 8>
Vložení vícerozměrného pole během běhu:
Toto téma je nuceno přebírat uživatelsky definovaný vstup do vícerozměrného pole za běhu. Zaměřuje se na to, že uživatel nejprve zadá veškeré vstupy do programu za běhu a po všech zadaných vstupech program poskytne výstup s ohledem na každý vstup odpovídajícím způsobem. Je to užitečné, když si uživatel přeje nejprve zadat vstup pro více testovacích případů s více různými hodnotami a poté, co jsou všechny tyto věci hotové, program začne poskytovat výstup. Jako příklad najdeme celkový počet sudých a lichých čísel ve vstupním poli. Zde použijeme koncept 2-rozměrného pole.
Zde je několik bodů, které vysvětlují použití různých prvků v nadcházejícím kódu:
- Číslo řádku je považováno za počet testovacích případů a hodnoty sloupců jsou považovány za hodnoty v každém testovacím případu.
- Jedna smyčka for() se používá k aktualizaci čísla testovacího případu a druhá smyčka for() se používá k převzetí příslušných hodnot pole.
- Po dokončení všech vstupů jsou opět použity dvě smyčky for() stejným způsobem ke spuštění programu podle zadané podmínky.
- První řádek vstupu je celkový počet TestCases.
- Druhý řádek zobrazuje celkový počet hodnot prvního pole.
- Třetí řádek uvádí hodnoty pole a tak dále.
Implementace:
java sort arraylist
Jáva
import> java.io.*;> import> java.util.Scanner;> class> GFGTestCase {> > public> static> void> main(String[] args)> > {> > // Scanner class to take> > // values from console> > Scanner scanner => new> Scanner(System.in);> > // totalTestCases = total> > // number of TestCases> > // eachTestCaseValues => > // values in each TestCase as> > // an Array values> > int> totalTestCases, eachTestCaseValues;> > // takes total number of> > // TestCases as integer number> > totalTestCases = scanner.nextInt();> > // An array is formed as row> > // values for total testCases> > int> [][] arrayMain => new> int> [totalTestCases][];> > // for loop to take input of> > // values in each TestCase> > for> (> int> i => 0> ; i eachTestCaseValues = scanner.nextInt(); arrayMain[i] = new int[eachTestCaseValues]; for (int j = 0; j arrayMain[i][j] = scanner.nextInt(); } } // All input entry is done. // Start executing output // according to condition provided for (int i = 0; i // Initialize total number of // even & odd numbers to zero int nEvenNumbers = 0, nOddNumbers = 0; // prints TestCase number with // total number of its arguments System.out.println('TestCase ' + i + ' with ' + arrayMain[i].length + ' values:'); for (int j = 0; j System.out.print(arrayMain[i][j] + ' '); // even & odd counter updated as // eligible number is found if (arrayMain[i][j] % 2 == 0) { nEvenNumbers++; } else { nOddNumbers++; } } System.out.println(); // Prints total numbers of // even & odd System.out.println( 'Total Even numbers: ' + nEvenNumbers + ', Total Odd numbers: ' + nOddNumbers); } } } // This code is contributed by Udayan Kamble.> |
>
>
Výstup:
Input: 2 2 1 2 3 1 2 3 Output: TestCase 0 with 2 values: 1 2 Total Even numbers: 1, Total Odd numbers: 1 TestCase 1 with 3 values: 1 2 3 Total Even numbers: 1, Total Odd numbers: 2 Input: 3 8 1 2 3 4 5 11 55 66 5 100 101 55 35 108 6 3 80 11 2 1 5 Output: TestCase 0 with 8 values: 1 2 3 4 5 11 55 66 Total Even numbers: 3, Total Odd numbers: 5 TestCase 1 with 5 values: 100 101 55 35 108 Total Even numbers: 2, Total Odd numbers: 3 TestCase 2 with 6 values: 3 80 11 2 1 5 Total Even numbers: 2, Total Odd numbers: 4>