Перейти к содержимому

Как сделать двумерный массив в java

  • автор:

Многомерные массивы

Многомерные массивы представляют собой массивы массивов.

При объявлении переменной многомерного массива для указания каждого дополнительного индекса используется отдельный ряд квадратных скобок. Например:

int[][] twoD = new int[5][4];

Следующий рисунок показывает как можно визуально представить двумерный массив 5 на 4. Левый индекс определяет строку, а правый столбец:

Концептуальное представление массива размерностью 5 на 4 фото

Следующий пример демонстрирует каким образом можно установить значения в двухмерный массив 5×4. Для перебора строк используется внешний цикл for , для перебора столбцов — внутренний. Каждому следующему элементу присваивается значение на единицу большее чем предыдущее.

public class TwoDArray1 < public static void main(String[] args) < int[][] twoD = new int[5][4]; int i, j, k = 0; for (i = 0; i < 5; i++) < for (j = 0; j < 4; j++) < twoD[i][j] = k++; System.out.print(twoD[i][j] + " "); >System.out.println(); > > >

Рассмотрим теперь как представлен двумерный массив int[][] twoD = new int[3][4]; в памяти. Переменная twoD указывает не на матрицу, а на строку (красного цвета) состоящую из трех элементов. Значение каждого элемента — это ссылка на строку из четырех элементов (фиолетового цвета).

Представление двухмерного массива в памяти фото

Следующая картинка показывает каким образом, хранится трехмерный массив int[][][] threeD = new int[3][4][2] в памяти:

Представление трехмерного массива в памяти фото

Подобным образом может храниться массив любой размерности в памяти.

В двумерных массивах, которые мы рассматривали до сих пор, количество элементов в каждой строке одинаково — чаще всего так и бывает. Но это не обязательно, каждая строка может содержать разное количество элементов. Например:

Пример двухмерного массива c разной размерностью фото

Посмотрим код, реализующий такой массив. При объявлении двумерного массива необходимо задать количество элементов только для первой размерности — int[][] array = new int[4][] . Таким образом, мы указываем количество строк в массиве, но под каждую строку память не выделяем. Далее выделяем отдельно память под каждую строку массива. Например, строка с индексом ноль будет размера 1 — array[0] = new int[1] .

public class TwoDArray2 < public static void main(String[] args) < int[][] array = new int[4][]; array[0] = new int[1]; array[1] = new int[2]; array[2] = new int[3]; array[3] = new int[4]; int i, j, k = 0; for (i = 0; i < 4; i++) < for (j = 0; j < i + 1; j++) < array[i][j] = k++; System.out.print(array[i][j] + " "); >System.out.println(); > > >

Для многомерных массивов можно также использовать блок для инициализации, если значения всех элементов заранее известны. Каждая отдельная строка заключается в фигурные скобки:

public class TwoDArray3 < public static void main(String[] args) < double[][] arrayTwoD = < , , , >; for (double[] arrayOneD : arrayTwoD) < for (double element : arrayOneD) < System.out.print(element + " "); >System.out.println(); > > >

Презентацию с видео можно скачать на Patreon .

Как создать двумерный массив в java

Для создания двумерного массива в Java нужно определить тип данных элементов массива и указать количество строк и столбцов в массиве.

Вот пример создания двумерного массива в Java :

int[][] matrix = new int[3][4]; 

В этом примере мы создаем двумерный массив matrix , который содержит 3 строки и 4 столбца. Каждый элемент массива имеет тип int

Можно также создать двумерный массив с помощью оператора инициализации:

int[][] matrix = 1, 2, 3>, 4, 5, 6>, 7, 8, 9>, 10, 11, 12>>; 

В этом примере мы создаем двумерный массив matrix размером 4×3 и заполняем его значениями при инициализации.

Многомерные массивы 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 = < , , , >;

Каждый компонент массива также представляет собой массив, и длина каждого ряда отличается:

Как инициализировать двумерный массив Java?

Давайте напишем программу, чтобы это доказать:

class MultidimensionalArray < public static void main(String[] args) < int[][] a = < , , , >; 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 = < , , , >; 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 = < , , , >; 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 = < < , >, < , , > >;

Трёхмерный массив — это массив, состоящий из двумерных массивов. Как и у двумерных массивов Java , его ряды могут быть различной длины.

Пример: программа для вывода элементов трёхмерного массива с помощью циклов :

class ThreeArray < public static void main(String[] args) < // test – трёхмерный массив int[][][] test = < < , >, < , , > >; // цикл 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

МК Михаил Кузнецов автор-переводчик статьи «

Двумерные массивы в Java

Вы уже знаете что такое массивы в Java и как с ними работать?

1. Если ответ «нет» — прочтите сначала статью «Массивы в Java»

2. Если ответ «да» — читайте статью ниже о двумерных массивах.

Поскольку Вы уже знаете что такое массивы и как с ними работать, наверняка, для Вас не проблема:

  • создать одномерный массив
  • заполнить его значениями
  • и вывести в консоль
Например:

class Test < public static void main ( String [ ] args ) < int [ ] array = < 51 , 136 , 387 >;
for ( int i = 0 ; i < array . length ; i ++ ) < System . out . println ( array [ i ] ) ;

Ну, а что же с двумерным массивом?

Самый, наверное, распространенный пример двумерного массива — это матрица. Если кто забыл что такое матрица, напоминаем:

array_vertex-academy-2

В матрице есть строки и столбцы . На пересечении их стоит определенное значение.

array_vertex-academy-3

Напоминаем, что счет в массивах начинается с 0 .

— число 1 это пересечение 0 — строки и 0 — столбца
— число 2 это пересечение 0 — строки и 1 — столбца
— число 3 это пересечение 1 — строки и 0 — столбца
— число 4 это пересечение 1 — строки и 1 — столбца

Ниже приводим пример объявления двумерного массива на языке программирования Java:

class Test < public static void main ( String [ ] args ) < int [ ] [ ] array = new int [ 2 ] [ 2 ] ;

Или можно сразу объявить содержимое массива:

class Test < public static void main ( String [ ] args ) < int [ ] [ ] array = < < 1 , 2 >, < 3 , 4 >> ;

При инициализации двумерного массива, можно заметить отличие от обычного массива. В двумерном массиве Вы используете две квадратные скобки вместо одной.

  • в первой вы пишите количество строк
  • во второй вы пишите количество столбцов

При заполнении двумерного массива Вы указываете в этих скобках строку и столбец.

Например

class Test < public static void main ( String [ ] args ) < int [ ] [ ] array = new int [ 2 ] [ 2 ] ; array [ 0 ] [ 0 ] = 1 ; array [ 0 ] [ 1 ] = 2 ; array [ 1 ] [ 0 ] = 3 ; array [ 1 ] [ 1 ] = 4 ;

А как же вывести двумерный массив в консоль?

Вывод двумерного массива с помощью цикла for сильно отличается от вывода обычного массива (когда используется цикл for).

Чтобы вывести в каждую ячейку двумерного массива значение, не достаточно использовать один цикл for. Необходимо использовать два цикла for, при этом один из них находится в другом.

Почему так?

Ранее упоминалось, что двумерный массив состоит из строк и столбцов. Каждая ячейка такого массива — это пересечение какой-то строки и столбца.

1. Так что первый цикл for перебирает каждую строку двумерного массива (которая содержит какое-то количество столбцов).

2. А второй цикл for перебирает столбцы в этой строке. Таким образом можно заполнить значением каждый элемент двумерного массива.

Например:

class Test < public static void main ( String [ ] args ) < int [ ] [ ] array = new int [ 2 ] [ 2 ] ; array [ 0 ] [ 0 ] = 1 ; array [ 0 ] [ 1 ] = 2 ; array [ 1 ] [ 0 ] = 3 ; array [ 1 ] [ 1 ] = 4 ; for ( int i = 0 ; i < array . length ; i ++ ) < for ( int j = 0 ; j < array [ i ] . length ; j ++ ) < System . out . print ( array [ i ] [ j ] + "\t" ) ; System . out . println ( ) ;

Если Вы запустите данный код на своем компьютере, в консоли Вы увидите:

Надеемся, что наша статья была Вам полезна. Также есть возможность записаться на наши курсы по Java в Киеве. Обучаем с нуля. Детальную информацию Вы можете найти у нас на сайте.

  • ← Цикл for each в Java
  • Преобразование типов в Java →

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *