Многомерные массивы
Многомерные массивы — это массивы, элементы которых также являются массивами. В Java они могут иметь несколько уровней вложенности, что позволяет создавать сложные структуры данных. Самый распространённый вид многомерных массивов — это двумерные массивы, которые можно представить в виде матрицы или таблицы.
Цель:
- Изучить понятие многомерных массивов в Java.
- Научиться объявлять и инициализировать многомерные массивы.
- Закрепить навыки работы с многомерными массивами через примеры.
Объявление и инициализация многомерных массивов
Многомерные массивы объявляются так же, как и одномерные, но с добавлением дополнительных пар квадратных скобок []
для каждого уровня вложенности.
Пример объявления двумерного массива:
int[][] matrix;
Здесь matrix
— это двумерный массив целых чисел. Для объявления трехмерного массива нужно добавить ещё одну пару скобок:
int[][][] threeDArray;
Инициализация многомерного массива:
Многомерный массив можно инициализировать сразу при объявлении:
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
Этот массив можно представить как таблицу:
1 | 2 | 3 |
---|---|---|
4 | 5 | 6 |
7 | 8 | 9 |
Пример создания и инициализации массива программно:
int[][] matrix = new int[3][3]; // Создаём массив 3x3
matrix[0][0] = 1;
matrix[0][1] = 2;
matrix[0][2] = 3;
// и так далее...
Здесь создаётся массив с тремя строками и тремя столбцами. Элементы массива можно заполнять вручную или с помощью циклов.
Доступ к элементам многомерного массива
Для доступа к элементам многомерного массива используется несколько индексов: первый индекс — для строк, второй — для столбцов.
Пример:
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
System.out.println(matrix[0][1]); // Вывод: 2
Здесь matrix[0][1]
означает элемент из первой строки и второго столбца.
Работа с многомерными массивами через циклы
Для перебора элементов многомерного массива обычно используются вложенные циклы. Внешний цикл проходит по строкам массива, а внутренний — по столбцам.
Пример вывода всех элементов двумерного массива:
public class Main {
public static void main(String[] args) {
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
for (int i = 0; i < matrix.length; i++) { // Проход по строкам
for (int j = 0; j < matrix[i].length; j++) { // Проход по столбцам
System.out.print(matrix[i][j] + " ");
}
System.out.println(); // Переход на новую строку после каждой строки массива
}
}
}
Вывод:
1 2 3
4 5 6
7 8 9
Неправильные массивы (jagged arrays)
В Java двумерные массивы могут быть неправильными (jagged), то есть каждая строка может иметь разное количество столбцов. Это достигается за счёт того, что каждая строка — это отдельный массив.
Пример создания неправильного массива:
int[][] jaggedArray = new int[3][];
jaggedArray[0] = new int[2]; // Первая строка длиной 2
jaggedArray[1] = new int[3]; // Вторая строка длиной 3
jaggedArray[2] = new int[1]; // Третья строка длиной 1
В этом примере первая строка имеет два элемента, вторая — три, а третья — один.
Трёхмерные массивы
Трёхмерные массивы можно представить как массив массивов двумерных массивов, то есть как "куб". Для работы с ними используются три индекса.
Пример объявления и инициализации трёхмерного массива:
int[][][] cube = {
{
{1, 2, 3},
{4, 5, 6}
},
{
{7, 8, 9},
{10, 11, 12}
}
};
Для доступа к элементу трёхмерного массива используются три индекса:
System.out.println(cube[1][0][2]); // Вывод: 9
Здесь cube[1][0][2]
означает элемент из второй части массива (1
), первой строки (0
) и третьего столбца (2
).
Примеры для практики
- Задача: Создание и вывод таблицы умножения Напишите программу, которая создаёт и выводит таблицу умножения размером 5x5.
#### Решение: ```java public class Main { public static void main(String[] args) { int[][] multiplicationTable = new int[5][5];
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
multiplicationTable[i][j] = (i + 1) * (j + 1);
System.out.print(multiplicationTable[i][j] + "\t");
}
System.out.println();
}
}
} ```
- Задача: Подсчёт суммы всех элементов двумерного массива Напишите программу, которая находит сумму всех элементов в двумерном массиве.
#### Решение: ```java public class Main { public static void main(String[] args) { int[][] matrix = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
int sum = 0;
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
sum += matrix[i][j];
}
}
System.out.println("Сумма всех элементов: " + sum);
}
} ```
- Задача: Транспонирование матрицы Напишите программу, которая транспонирует матрицу размером 3x3 (т.е. меняет строки и столбцы местами).
#### Решение: ```java public class Main { public static void main(String[] args) { int[][] matrix = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
int[][] transposed = new int[3][3];
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
transposed[j][i] = matrix[i][j];
}
}
for (int i = 0; i < transposed.length; i++) {
for (int j = 0; j < transposed[i].length; j++) {
System.out.print(transposed[i][j] + " ");
}
System.out.println();
}
}
} ```
Заключение
Многомерные массивы в Java позволяют эффективно работать с данными, организованными в виде таблиц или более сложных структур. С помощью многомерных массивов можно решать различные задачи, такие как работа с матрицами, графами или таблицами данных.
Важные моменты:
- Многомерные массивы — это массивы массивов. Самый распространённый тип — двумерные массивы.
- Многомерные массивы могут быть правильными и неправильными (jagged arrays).
- Для работы с многомерными массивами используются вложенные циклы.
- Трёхмерные массивы представляют собой "куб" данных, доступ к элементам которого осуществляется с помощью трёх индексов.
[[Programming/java/1. osnovi/Тема 3. Основы ООП/Урок 9. Многомерные массивы/задания|задания]]