logo

Matrius multidimensionals en Java

Conceptes bàsics de matriu en Java Arrays multidimensionals es pot definir amb paraules simples com a matriu de matrius. Les dades en matrius multidimensionals s'emmagatzemen en forma tabular (en l'ordre principal de la fila).

Sintaxi:



tipus_dada [1a dimensió][2a dimensió][]..[Nth dimensió] nom_matriu = nou tipus de dades [mida1][mida2]….[midaN];

on:

  • tipus_dada : Tipus de dades a emmagatzemar a la matriu. Per exemple: int, char, etc.
  • dimensió : La dimensió de la matriu creada. Per exemple: 1D, 2D, etc.
  • nom_matriu : Nom de la matriu
  • talla1, talla2, …, talla N : Mides de les dimensions respectivament.

Exemples:



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

Mida de les matrius multidimensionals : El nombre total d'elements que es poden emmagatzemar en una matriu multidimensional es pot calcular multiplicant la mida de totes les dimensions.

Per exemple: La matriu int[][] x = nou int[10][20] pot emmagatzemar un total de (10*20) = 200 elements. De la mateixa manera, matriu int[][][] x = nou int[5][10][20] pot emmagatzemar un total de (5*10*20) = 1000 elements.

Aplicació de la matriu multidimensional

● Les matrius multidimensionals s'utilitzen per emmagatzemar les dades en forma tabular. Per exemple, emmagatzemar el número de rotlle i les notes d'un estudiant es pot fer fàcilment mitjançant matrius multidimensionals. Un altre ús comú és emmagatzemar les imatges en matrius 3D.



● En preguntes de programació dinàmica s'utilitzen matrius multidimensionals que s'utilitzen per representar els estats del problema.

● A part d'aquests, també tenen aplicacions en molts problemes algorítmics estàndard com: Multiplicació de matrius, Representació de matrius d'adjacència en gràfics, problemes de cerca de graelles.

Matriu bidimensional (matriu 2D)

La matriu bidimensional és la forma més senzilla d'una matriu multidimensional. Una matriu bidimensional es pot veure com una matriu de matriu unidimensional per facilitar la comprensió.

Mètode indirecte de declaració:

  • Declaració - Sintaxi:
  data_type[][] array_name = new data_type[x][y];   For example: int[][] arr = new int[10][20];>
  • Inicialització - Sintaxi:
  array_name[row_index][column_index] = value;   For example: arr[0][0] = 1;>

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

>

>

Sortida

arr[0][0] = 1>

Exemple: implementació de matrius 2D amb valors per defecte amb matriu 4*4

Java




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

>

>

Sortida

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

Explicació:

  • El nombre de files i columnes s'especifica mitjançant les variables files i columns. La matriu 2D es crea mitjançant l'operador new, que assigna memòria per a la matriu. La mida de la matriu s'especifica per files i columnes.

Mètode directe de declaració: Sintaxi:

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

Exemple:

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

>

>

Sortida

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

Accés a elements de matrius bidimensionals

Els elements en matrius bidimensionals es refereixen habitualment per x[i][j] on 'i' és el número de fila i 'j' és el número de columna.

Sintaxi:

x[row_index][column_index]>

Per exemple:

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

L'exemple anterior representa l'element present a la primera fila i primera columna. Nota : En matrius si la mida de la matriu és N. El seu índex serà de 0 a N-1. Per tant, per a row_index 2, el número de fila real és 2+1 = 3. Exemple:

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

>

>

Sortida

arr[0][0] = 1>

Representació de la matriu 2D en format tabular:

Una matriu bidimensional es pot veure com una taula amb files 'x' i columnes 'y' on el nombre de fila va de 0 a (x-1) i el nombre de columna va de 0 a (y-1). A continuació es mostra una matriu bidimensional 'x' amb 3 files i 3 columnes:

dos-d

Imprimeix matriu 2D en format tabular:

Per generar tots els elements d'una matriu bidimensional, utilitzeu els bucles imbricats. Per a això calen dos bucles for, un per recórrer les files i un altre per recórrer columnes.

Exemple:

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

>

>

Sortida

1 2 3 4>

Exemple: Implementació d'una matriu 2D amb entrada d'usuari

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

>

>

Sortida

Enter number of rows: 3 Enter number of columns: 3 1 2 3  2 4 6  3 6 9>
  • Aquest codi demana a l'usuari que introdueixi el nombre de files i columnes per a la matriu bidimensional. La classe Scanner s'utilitza per llegir l'entrada de l'usuari. A continuació, crea una matriu bidimensional d'enters amb el nombre especificat de files i columnes, i assigna cada element de la matriu amb i*j.
  • Si voleu crear una matriu multidimensional amb més de dues dimensions, podeu utilitzar el mateix enfocament de crear una matriu de matrius. Per exemple, per crear una matriu de 3 dimensions, podeu crear una matriu de matrius de 2 dimensions.

Matriu tridimensional (matriu 3D)

La matriu tridimensional és una forma complexa d'una matriu multidimensional. Una matriu tridimensional es pot veure com una matriu de matrius bidimensionals per facilitar la comprensió.

Mètode indirecte de declaració:

  • Declaració - Sintaxi:
  data_type[][][] array_name = new data_type[x][y][z];   For example: int[][][] arr = new int[10][20][30];>
  • Inicialització - Sintaxi:
  array_name[array_index][row_index][column_index] = value;   For example: arr[0][0][0] = 1;>

Exemple:

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

>

>

Sortida

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

Mètode directe de declaració: Sintaxi:

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

Exemple:

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

>

>

Sortida

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>

Accés a elements de matrius tridimensionals

Els elements en matrius tridimensionals es fan referència habitualment per x[i][j][k] on 'i' és el número de matriu, 'j' és el número de fila i 'k' és el número de columna.

Sintaxi:

x[array_index][row_index][column_index]>

Per exemple:

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

L'exemple anterior representa l'element present a la primera fila i primera columna de la primera matriu de la matriu 3D declarada.

Nota : En matrius si la mida de la matriu és N. El seu índex serà de 0 a N-1. Per tant, per a row_index 2, el número de fila real és 2+1 = 3.

Exemple:

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

>

>

Sortida

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

Representació de la matriu 3D en format tabular:

Una matriu tridimensional es pot veure com una taula de matrius amb files 'x' i columnes 'y' on el nombre de fila va de 0 a (x-1) i el nombre de columna va de 0 a (y-1). A continuació es mostra una matriu tridimensional amb 3 matrius que conté 3 files i 3 columnes:

Imprimeix matriu 3D en format tabular:

Per donar sortida a tots els elements d'una matriu tridimensional, utilitzeu els bucles imbricats. Per a això calen tres bucles for, un per recórrer les matrius, el segon per recórrer les files i un altre per recórrer columnes.

Exemple:

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> k =>0>; k <>2>; k++) {> >System.out.print(arr[i][j][k] +>' '>);> >}> >System.out.println();> >}> >System.out.println();> >}> >}> }>

>

>

Sortida

1 2 3 4 5 6 7 8>

Inserció d'una matriu multidimensional durant el temps d'execució:

Aquest tema s'obliga a prendre entrada definida per l'usuari en una matriu multidimensional durant el temps d'execució. Es centra en que l'usuari primer dóna totes les entrades al programa durant el temps d'execució i, després de totes les entrades introduïdes, el programa donarà sortida respecte a cada entrada en conseqüència. És útil quan l'usuari vol introduir primers casos de prova amb diversos valors diferents i després de fer totes aquestes coses, el programa començarà a proporcionar sortida. Com a exemple, busquem el nombre total de nombres parells i senars en una matriu d'entrada. Aquí, utilitzarem el concepte de matriu bidimensional.

A continuació, es mostren alguns punts que expliquen l'ús dels diferents elements del codi següent:

  • El nombre sencer de fila es considera com el nombre de casos de prova i els valors de columna es consideren valors en cada cas de prova.
  • Un bucle for() s'utilitza per actualitzar el número de cas de prova i un altre bucle for() s'utilitza per prendre els valors de matriu respectius.
  • Com que s'han fet totes les entrades d'entrada, de nou s'utilitzen dos bucles for() de la mateixa manera per executar el programa segons la condició especificada.
  • La primera línia d'entrada és el nombre total de casos de prova.
  • La segona línia mostra el nombre total de valors de la primera matriu.
  • La tercera línia dóna valors de matriu i així successivament.

Implementació:

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

>

>

Sortida:

  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>