Многомерные массивы Java
В Java можно объявить массив массивов, известный как многомерный массив. К примеру:
int[][] a = new int[3][4];
Здесь мы видим двухмерный массив Java, который может содержать до 12 элементов типа int:

Не забывайте, что индексирование в Java начинается с нуля, поэтому первые элементы массива имеют индекс 0, а не 1.
Аналогично можно объявить и трёхмерный (3D) массив. Например:
String[][][] personalInfo = new String[3][4][2];
В примере выше personalInfo — это трёхмерный массив, в котором может быть до 24 (3*4*2) элементов типа String.
В Java составляющие многомерного массива — это тоже массивы. Если вы знаете C/C++, то может показаться, что многомерные массивы в Java и C/C++ работают одинаково. Но это не совсем так — в Java ряды массивов могут быть разной длины. Разницу мы увидим во время инициализации.
Как инициализировать двумерный массив Java?
Ниже приводится пример инициализации двумерного массива Java:
int[][] a = {
{1, 2, 3},
{4, 5, 6, 9},
{7},
};
Каждый компонент массива также представляет собой массив, и длина каждого ряда отличается:

Давайте напишем программу, чтобы это доказать:
class MultidimensionalArray {
public static void main(String[] args) {
int[][] a = {
{1, 2, 3},
{4, 5, 6, 9},
{7},
};
System.out.println("Длина ряда 1: " + a[0].length);
System.out.println("Длина ряда 2: " + a[1].length);
System.out.println("Длина ряда 3: " + a[2].length);
}
}
При запуске этой программы мы получим:
Длина ряда 1: 3
Длина ряда 2: 4
Длина ряда 3: 1
Поскольку многомерный массив состоит из отдельных массивов (a[0], a[1] and a[2]), можно использовать метод length для определения длины каждого ряда длины двумерного массива Java.
Пример: вывод на экран всех элементов двумерного массива с помощью циклов:
class MultidimensionalArray {
public static void main(String[] args) {
int[][] a = {
{1, -2, 3},
{-4, -5, 6, 9},
{7},
};
for (int i = 0; i < a.length; ++i) {
for(int j = 0; j < a[i].length; ++j) {
System.out.println(a[i][j]);
}
}
}
}
Всегда лучше использовать цикл for…each, когда нужно пройти по элементам массива. Пример сортировки двумерного массива Java можно записать с помощью цикла for…each следующим образом:
class MultidimensionalArray {
public static void main(String[] args) {
int[][] a = {
{1, -2, 3},
{-4, -5, 6, 9},
{7},
};
for (int[] innerArray: a) {
for(int data: innerArray) {
System.out.println(data);
}
}
}
}
При запуске этой программы мы получим следующий результат заполнения двумерного массива Java:
1
-2
3
-4
-5
6
9
7
Как инициализировать многомерный массив Java?
Многомерный или трёхмерный массив инициализируется почти так же, как двухмерный:
// test — трёхмерный массив
int[][][] test = {
{
{1, -2, 3},
{2, 3, 4}
},
{
{-4, -5, 6, 9},
{1},
{2, 3}
}
};
Трёхмерный массив — это массив, состоящий из двумерных массивов. Как и у двумерных массивов Java, его ряды могут быть различной длины.
Пример: программа для вывода элементов трёхмерного массива с помощью циклов:
class ThreeArray {
public static void main(String[] args) {
// test – трёхмерный массив
int[][][] test = {
{
{1, -2, 3},
{2, 3, 4}
},
{
{-4, -5, 6, 9},
{1},
{2, 3}
}
};
// цикл for..each проходит по элементам трёхмерного массива
for (int[][] array2D: test) {
for (int[] array1D: array2D) {
for(int item: array1D) {
System.out.println(item);
}
}
}
}
}
При запуске программы вывода двумерного массива Java получаем следующий результат:
1
-2
3
2
3
4
-4
-5
6
9
1
2
3