1. Нерівні масиви
У Java ти як програміст можеш не тільки переставляти рядки двовимірного масиву місцями, а й створювати цей масив сам так, як тобі хочеться.
Припустимо, ти хочеш, щоб у першого рядка двовимірного масиву була довжина 10, а у другого — 50. Чи можна так зробити? Так, можна.
Спочатку потрібно створити «контейнер контейнерів» – перший масив, який буде зберігати посилання на масиви-рядки. Це робиться так:
int[][] ім'я = new int[висота][];
Ти просто не вказуєш другий параметр, і Java-машина створює тільки «контейнер контейнерів». Ось що буде в пам'яті після виконання цього коду:
Ну а як створювати одномірні масиви, ти вже знаєш 🙂
Ось як буде виглядати підсумковий код:
|
Двовимірний масив Нульовий рядок — масив з 10 елементівПерший рядок — масив з 50 елементів. |
Тільки-но ти створив так званий «нерівний масив».
І якщо ми захочемо вивести всі елементи цього масиву на екран, нам дуже знадобиться властивість length у масиву: довжини рядків масиву ж різні.
До речі, як дізнатися довжину «контейнера контейнерів» у нашому прикладі? Це ж теж об'єкт-масив, а значить, у нього є довжина. Правильна відповідь — matrix.length.
А у масивів-рядків як? matrix[0].length
2. Робота з двовимірним масивом
Припустимо, ти хочеш вивести на екран двовимірний масив. Як же це зробити?
Наш код буде виглядати приблизно так:
|
Створення масиву Заповнення масиву значеннями Зовнішній цикл по рядках масиву — перебирає рядки масиву. Внутрішній цикл по клітинках — перебирає клітинки одного рядка. |
Тобі потрібно буде два вкладених цикли. Перший ми назвемо зовнішнім, а другий — внутрішнім.
У зовнішньому циклі (змінна i) ми по черзі обходимо всі масиви-рядки, з яких складається наш двовимірний масив. Кожне значення змінної i відповідає рядку масиву з таким номером.
У внутрішньому циклі (змінна j) ми перебираємо всі клітинки масивів-рядків. У результаті роботи внутрішнього циклу на екран виведеться рядок, складений із значень одного рядка масиву.
Ось що буде виведено на екран:
| Оброблений один рядок масиву | |
| Оброблено два рядки масиву | |
| Оброблено три рядки масиву | |
3. Багатовимірні масиви
І ще один цікавий факт про масиви, про який ти, мабуть, уже здогадуєшся. Якщо можна зробити двовимірний масив, то можна зробити й тривимірний?
Так, можна створити масив будь-якої розмірності. Такі масиви називають «багатовимірними».
Давай заради інтересу створимо багатовимірний масив розмірності 4.
int[][][][] matrix = new int[2][3][4][5];
Занадто простий код, як тобі?
А якщо створити його вручну?
int[][][][] matrix;
matrix = new int[2][][][]; // створюємо масив «посилань на посилання на посилання» довжини 2
for (int i = 0; i < matrix.length; i++)
{
matrix[i] = new int[3][][]; // створюємо масив «посилань на посилання» довжини 3
for (int j = 0; j < matrix[i].length; j++)
{
matrix[i][j] = new int[4][]; // створюємо масив посилань довжини 4
for (int k = 0; k < matrix[i][j].length; k++)
matrix[i][j][k] = new int[5]; // створюємо масиви цілих чисел довжини 5
}
}
І це тільки створення масиву! А ще з ним потрібно якось працювати.
Бонусне завдання — написати код, який виводить на екран всі значення тривимірного масиву.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ