








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
}
}
И это только создание массива! А ведь с ним еще и работать как-то нужно.
Бонусное задание — написать код, который выводит на экран все значения трехмерного массива.



ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ