logo

Багатовимірні масиви в 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




c#

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>