Багатовимірні масиви в Java

Багатовимірні масиви в Java

Основи масиву в Java Багатовимірні масиви можна визначити простими словами як масив масивів. Дані в багатовимірних масивах зберігаються в табличній формі (в порядку старшого рядка).

Синтаксис:

тип даних [1-й вимір][2-й вимір][]..[N-й вимір] ім'я_масиву = новий тип_данних [розмір1][розмір2]…[розмірN];

де:

  • тип даних : Тип даних, які будуть зберігатися в масиві. Наприклад: int, char тощо.
  • вимір : Розмір створеного масиву. Наприклад: 1D, 2D тощо.
  • ім'я_масиву : ім'я масиву
  • розмір1, розмір2, …, розмірN : Розміри габаритів відповідно.

приклади:

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

Розмір багатовимірних масивів : загальну кількість елементів, які можна зберігати в багатовимірному масиві, можна обчислити шляхом множення розміру всіх розмірів.

Наприклад: Масив int[][] x = новий int[10][20] може зберігати загалом (10*20) = 200 елементів. Аналогічно, масив int[][][] x = new int[5][10][20] може зберігати загалом (5*10*20) = 1000 елементів.

Застосування багатовимірного масиву

● Для зберігання даних у табличній формі використовуються багатовимірні масиви. Наприклад, зберігання номерів і оцінок студента можна легко здійснити за допомогою багатовимірних масивів. Іншим поширеним використанням є зберігання зображень у тривимірних масивах.

● У питаннях динамічного програмування використовуються багатовимірні масиви, які використовуються для представлення станів проблеми.

● Окрім цього, вони також мають застосування в багатьох стандартних алгоритмічних задачах, таких як: множення матриць, представлення матриці суміжності в графах, проблеми пошуку в сітці

Двовимірний масив (2D-масив)

Двовимірний масив є найпростішою формою багатовимірного масиву. Для легшого розуміння двовимірний масив можна розглядати як масив одновимірного масиву.

Непрямий спосіб декларування:

  • Оголошення – Синтаксис:
  data_type[][] array_name = new data_type[x][y];   For example: int[][] arr = new int[10][20]; 
  • Ініціалізація – Синтаксис:
  array_name[row_index][column_index] = value;   For example: arr[0][0] = 1; 

приклад: 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> ]);> > }> }>

Вихід

arr[0][0] = 1 

Приклад: Реалізація 2D-масиву зі значеннями за замовчуванням із матрицею 4*4

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

Вихід

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

Пояснення:

  • Кількість рядків і стовпців задається за допомогою змінних rows і columns. Двовимірний масив створюється за допомогою оператора new, який виділяє пам’ять для масиву. Розмір масиву задається рядками та стовпцями.

Прямий спосіб декларування: Синтаксис:

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

приклад:

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

Вихід

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

Доступ до елементів двовимірних масивів

Елементи в двовимірних масивах зазвичай називаються x[i][j] де «i» — номер рядка, а «j» — номер стовпця.

Синтаксис:

x[row_index][column_index] 

Наприклад:

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

Наведений вище приклад представляє елемент, присутній у першому рядку та першому стовпці. Примітка : у масивах, якщо розмір масиву N. Його індекс буде від 0 до N-1. Тому для row_index 2 фактичний номер рядка дорівнює 2+1 = 3. приклад:

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

Вихід

arr[0][0] = 1 

Представлення 2D масиву в табличному форматі:

Двовимірний масив можна розглядати як таблицю з рядками «x» і стовпцями «y», де номер рядка коливається від 0 до (x-1), а номер стовпця — від 0 до (y-1). Нижче показано двовимірний масив «x» із 3 рядками та 3 стовпцями:

двох-д

Роздрукувати 2D-масив у табличному форматі:

Щоб вивести всі елементи двовимірного масиву, використовуйте вкладені цикли for. Для цього потрібні два цикли for: один для обходу рядків, а інший для обходу стовпців.

приклад:

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

Вихід

1 2 3 4 

Приклад: Реалізація двовимірного масиву з введенням користувача

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

Вихід

Enter number of rows: 3 Enter number of columns: 3 1 2 3  2 4 6  3 6 9 
  • Цей код пропонує користувачеві ввести кількість рядків і стовпців для 2-вимірного масиву. Клас Scanner використовується для читання введених користувачем даних. Потім він створює двовимірний масив цілих чисел із заданою кількістю рядків і стовпців і призначає кожному елементу масиву i*j.
  • Якщо ви хочете створити багатовимірний масив із більш ніж двома вимірами, ви можете використати той самий підхід до створення масиву масивів. Наприклад, щоб створити 3-вимірний масив, ви можете створити масив 2-вимірних масивів.

Тривимірний масив (3D-масив)

Тривимірний масив є складною формою багатовимірного масиву. Для легшого розуміння тривимірний масив можна розглядати як масив двовимірного масиву.

Непрямий спосіб декларування:

  • Оголошення – Синтаксис:
  data_type[][][] array_name = new data_type[x][y][z];   For example: int[][][] arr = new int[10][20][30]; 
  • Ініціалізація – Синтаксис:
  array_name[array_index][row_index][column_index] = value;   For example: arr[0][0][0] = 1; 

приклад:

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

Вихід

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

Прямий спосіб декларування: Синтаксис:

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

приклад:

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

Вихід

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 

Доступ до елементів тривимірних масивів

Елементи в тривимірних масивах зазвичай називаються x[i][j][k] де «i» — номер масиву, «j» — номер рядка, а «k» — номер стовпця.

Синтаксис:

x[array_index][row_index][column_index] 

Наприклад:

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

Наведений вище приклад представляє елемент, присутній у першому рядку та першому стовпці першого масиву в заявленому 3D-масиві.

Примітка : у масивах, якщо розмір масиву N. Його індекс буде від 0 до N-1. Тому для row_index 2 фактичний номер рядка дорівнює 2+1 = 3.

приклад:

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

Вихід

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

Представлення тривимірного масиву в табличному форматі:

Тривимірний масив можна розглядати як таблицю масивів із рядками «x» і стовпцями «y», де номер рядка коливається від 0 до (x-1), а номер стовпця — від 0 до (y-1). Нижче показано тривимірний масив із 3 масивами, що містять 3 рядки та 3 стовпці:

Роздрукуйте 3D-масив у табличному форматі:

Щоб вивести всі елементи тривимірного масиву, використовуйте вкладені цикли for. Для цього потрібні три цикли for: один для обходу масивів, другий для обходу рядків і інший для обходу стовпців.

приклад:

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

Вихід

1 2 3 4 5 6 7 8 

Вставлення багатовимірного масиву під час виконання:

Ця тема примусово вводить визначені користувачем дані в багатовимірний масив під час виконання. Він зосереджений на тому, що користувач спочатку вводить усі вхідні дані в програму під час виконання, а після введення всіх введених даних програма видає вихідні дані щодо кожного вхідного даних відповідно. Це корисно, коли користувач бажає спочатку ввести вхідні дані для кількох тестів із кількома різними значеннями, а після того, як усе це зроблено, програма почне надавати вихідні дані. Для прикладу давайте знайдемо загальну кількість парних і непарних чисел у вхідному масиві. Тут ми будемо використовувати концепцію 2-вимірного масиву.

Ось кілька моментів, які пояснюють використання різних елементів у майбутньому коді:

  • Ціле число рядка розглядається як кількість тестів, а значення стовпця вважаються значеннями в кожному тесті.
  • Один цикл for() використовується для оновлення номера тестового прикладу, а інший цикл for() використовується для отримання відповідних значень масиву.
  • Після завершення всіх вводів знову використовуються два цикли for() таким же чином для виконання програми відповідно до вказаної умови.
  • У першому рядку вводиться загальна кількість тестових випадків.
  • У другому рядку показано загальну кількість значень першого масиву.
  • Третій рядок містить значення масиву тощо.

Реалізація:

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

Вихід:

  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 


Вам Може Сподобатися