logo

Multidimensionelle arrays i Java

Array-Basics i Java Multidimensionelle arrays kan defineres i enkle ord som en række af arrays. Data i multidimensionelle arrays gemmes i tabelform (i række større rækkefølge).

Syntaks:



datatype [1. dimension][2. dimension][]..[N. dimension] matrix_navn = ny datatype [størrelse1][størrelse2]….[størrelseN];

hvor:

  • datatype : Type data, der skal gemmes i arrayet. For eksempel: int, char osv.
  • dimension : Dimensionen af ​​det oprettede array. For eksempel: 1D, 2D osv.
  • matrix_navn : Navnet på arrayet
  • størrelse 1, størrelse 2, …, størrelse N : Størrelser på dimensionerne hhv.

Eksempler:



Two dimensional array: int[][] twoD_arr = new int[10][20];  Three dimensional array: int[][][] threeD_arr = new int[10][20][30];>

Størrelse af multidimensionelle arrays : Det samlede antal elementer, der kan lagres i et multidimensionelt array, kan beregnes ved at gange størrelsen af ​​alle dimensionerne.

For eksempel: Arrayet int[][] x = ny int[10][20] kan lagre i alt (10*20) = 200 elementer. Tilsvarende array int[][][] x = ny int[5][10][20] kan lagre i alt (5*10*20) = 1000 elementer.

Anvendelse af Multi-Dimensional Array

● Multidimensionelle arrays bruges til at gemme dataene i tabelform. For eksempel kan lagring af rullenummer og -mærker for en elev nemt gøres ved hjælp af flerdimensionelle arrays. En anden almindelig brug er at gemme billederne i 3D-arrays.



alfabet med tal

● I dynamiske programmeringsspørgsmål bruges multidimensionelle arrays, som bruges til at repræsentere problemets tilstande.

● Ud over disse har de også applikationer i mange standard algoritmiske problemer som: Matrix Multiplikation, Adjacency matrix repræsentation i grafer, Grid søgeproblemer

Todimensionelt array (2D-array)

Todimensionelt array er den enkleste form for et multidimensionelt array. Et todimensionelt array kan ses som et array af en-dimensionelt array for lettere forståelse.

Indirekte erklæringsmetode:

  • Erklæring – Syntaks:
  data_type[][] array_name = new data_type[x][y];   For example: int[][] arr = new int[10][20];>
  • Initialisering – Syntaks:
  array_name[row_index][column_index] = value;   For example: arr[0][0] = 1;>

Eksempel: 1

Java




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>]);> >}> }>

>

>

Produktion

arr[0][0] = 1>

Eksempel: Implementering af 2D-array med standardværdier med 4*4 matrix

Java




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(); } } }>

>

>

Produktion

The 2D array is: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16>

Forklaring:

  • Antallet af rækker og kolonner er angivet ved hjælp af variablerne rækker og kolonner. 2D-arrayet oprettes ved hjælp af den nye operator, som allokerer hukommelse til arrayet. Størrelsen af ​​arrayet er angivet af rækker og kolonner.

Direkte erklæringsmetode: Syntaks:

  data_type[][] array_name = {     {valueR1C1, valueR1C2, ....},      {valueR2C1, valueR2C2, ....}     };   For example: int[][] arr = {{1, 2}, {3, 4}};>

Eksempel:

Java




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]);> >}> }>

>

>

Produktion

arr[0][0] = 1 arr[0][1] = 2 arr[1][0] = 3 arr[1][1] = 4>

Adgang til elementer af todimensionelle arrays

Elementer i todimensionelle arrays omtales almindeligvis af x[i][j] hvor 'i' er rækkenummeret og 'j' er kolonnenummeret.

Syntaks:

x[row_index][column_index]>

For eksempel:

int[][] arr = new int[10][20]; arr[0][0] = 1;>

Ovenstående eksempel repræsenterer elementet i første række og første kolonne. Bemærk : I arrays, hvis størrelsen af ​​array er N. Dens indeks vil være fra 0 til N-1. Derfor, for række_indeks 2, er det faktiske rækkenummer 2+1 = 3. Eksempel:

Java




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>]);> >}> }>

>

>

Produktion

arr[0][0] = 1>

Repræsentation af 2D-array i tabelformat:

Et todimensionelt array kan ses som en tabel med 'x' rækker og 'y' kolonner, hvor rækkenummeret går fra 0 til (x-1) og kolonnenummeret går fra 0 til (y-1). Et todimensionelt array 'x' med 3 rækker og 3 kolonner er vist nedenfor:

to-d

Udskriv 2D-array i tabelformat:

For at udskrive alle elementerne i et todimensionelt array skal du bruge indlejret for loops. Til dette kræves to for sløjfer, en til at krydse rækkerne og en anden til at krydse kolonner.

Eksempel:

Java




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();> >}> >}> }>

>

>

Produktion

1 2 3 4>

Eksempel: Implementering af 2D-array med brugerinput

Java




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(); } }>

>

>

Produktion

Enter number of rows: 3 Enter number of columns: 3 1 2 3  2 4 6  3 6 9>
  • Denne kode beder brugeren om at indtaste antallet af rækker og kolonner for det 2-dimensionelle array. Scanner-klassen bruges til at læse brugerinput. Derefter opretter den et 2-dimensionelt array af heltal med det specificerede antal rækker og kolonner og tildeler hvert element i arrayet i*j.
  • Hvis du vil oprette en flerdimensional matrix med mere end to dimensioner, kan du bruge den samme tilgang til at oprette en matrix af matrixer. For at oprette et 3-dimensionelt array kan du f.eks. oprette et array af 2-dimensionelle arrays.

Tredimensionelt array (3D-array)

Tredimensionelt array er en kompleks form for et multidimensionelt array. Et tredimensionelt array kan ses som et array af to-dimensionelt array for lettere forståelse.

Indirekte erklæringsmetode:

len af ​​streng i java
  • Erklæring – Syntaks:
  data_type[][][] array_name = new data_type[x][y][z];   For example: int[][][] arr = new int[10][20][30];>
  • Initialisering – Syntaks:
  array_name[array_index][row_index][column_index] = value;   For example: arr[0][0][0] = 1;>

Eksempel:

Java




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>]);> >}> }>

>

>

Produktion

arr[0][0][0] = 1>

Direkte erklæringsmetode: Syntaks:

  data_type[][][] array_name = {     {     {valueA1R1C1, valueA1R1C2, ....},      {valueA1R2C1, valueA1R2C2, ....}     },     {     {valueA2R1C1, valueA2R1C2, ....},      {valueA2R2C1, valueA2R2C2, ....}     }     };   For example: int[][][] arr = { {{1, 2}, {3, 4}}, {{5, 6}, {7, 8}} };>

Eksempel:

Java




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]);> >}> }>

>

>

Produktion

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>

Adgang til elementer i tredimensionelle arrays

Elementer i tredimensionelle arrays omtales almindeligvis af x[i][j][k] hvor 'i' er matrixnummeret, 'j' er rækkenummeret og 'k' er kolonnenummeret.

Syntaks:

x[array_index][row_index][column_index]>

For eksempel:

int[][][] arr = new int[10][20][30]; arr[0][0][0] = 1;>

Ovenstående eksempel repræsenterer elementet, der er til stede i den første række og første kolonne i det første array i det erklærede 3D-array.

Bemærk : I arrays, hvis størrelsen af ​​array er N. Dens indeks vil være fra 0 til N-1. Derfor, for række_indeks 2, er det faktiske rækkenummer 2+1 = 3.

Eksempel:

Java




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>]);> >}> }>

>

>

Produktion

arr[0][0][0] = 1>

Repræsentation af 3D-array i tabelformat:

Et tredimensionelt array kan ses som en tabel over arrays med 'x' rækker og 'y' kolonner, hvor rækkenummeret går fra 0 til (x-1) og kolonnenummeret går fra 0 til (y-1). Et tredimensionelt array med 3 array indeholdende 3 rækker og 3 kolonner er vist nedenfor:

Udskriv 3D-array i tabelformat:

For at udskrive alle elementerne i et tredimensionelt array skal du bruge indlejret for loops. Til dette kræves tre sløjfer, en for at krydse arrays, en anden for at krydse rækkerne og en anden for at krydse kolonner.

Eksempel:

Java




ryd npm cache

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();> >}> >}> }>

>

>

Produktion

1 2 3 4 5 6 7 8>

Indsættelse af et multidimensionelt array under Runtime:

Dette emne er tvunget til at tage brugerdefineret input ind i et multidimensionelt array under kørsel. Det er fokuseret på, at brugeren først giver alle input til programmet under kørsel, og efter alle indtastede input, vil programmet give output med hensyn til hver input i overensstemmelse hermed. Det er nyttigt, når brugeren ønsker at indtaste input til flere test-cases med flere forskellige værdier først, og når alle disse ting er gjort, vil programmet begynde at levere output. Lad os som et eksempel finde det samlede antal lige og ulige tal i et input-array. Her vil vi bruge konceptet med et 2-dimensionelt array.

Her er et par punkter, der forklarer brugen af ​​de forskellige elementer i den kommende kode:

  • Rækkeheltal betragtes som antallet af test-tilfælde, og kolonneværdier betragtes som værdier i hver test-tilfælde.
  • En for()-løkke bruges til at opdatere Test-Case-nummeret, og en anden for()-løkke bruges til at tage respektive matrixværdier.
  • Efterhånden som al input er udført, bruges igen to for()-løkker på samme måde til at udføre programmet i henhold til den angivne betingelse.
  • Den første linje af input er det samlede antal TestCases.
  • Den anden linje viser det samlede antal første array-værdier.
  • Den tredje linje giver matrixværdier og så videre.

Implementering:

Java




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.>

>

>

Produktion:

  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>