Программирование двумерных массивов

Массив из более чем одного измерения называется многомерным массивом. Двумя наиболее распространенными примерами многомерных массивов являются двухмерные и трехмерные массивы. Известные как 2D и 3D массивы. Я никогда не видел 4-мерных массивов. Даже 3D-массивы не так уж распространены. Теперь возникает вопрос. Когда использовать многомерный массив? Какой-нибудь реальный пример? Ну, 2D-массивы очень распространены в платформенных играх. Таких как Super Mario Bros. Для представления экрана или ландшафта; 2D массивы также можно использовать для представления структур. Таких как электронная таблица. Или для рисования настольных игр. Таких как шахматы . Для которых требуется

доска 8х8, шашки и крестики-нолики, для которых требуется 3 строки и 3 столбца.
Еще одно популярное применение многомерных массивов-манипулирование матрицами. Например, для представления матрицы 3×3 вам нужен двумерный массив из 3 одномерных массивов. Каждый из которых содержит 3 элемента.

Аналогично для представления матриц 3х2 вам понадобятся 2 двумерных массива одномерного массива длины 3. Другими словами. Каждая строка в двумерном массиве является одномерным массивом. Java действительно не поддерживает многомерный массив

, но позволяет создавать и использовать массив любого числа измерений.

Двумерный массив на самом деле является массивом одномерного массива. Это не похоже на такие языки . Как C или FORTRAN, которые позволяют Java array иметь строки различной длины. То есть многомерный массив может иметь 2 столбца в одной строке и 3 столбца во второй.

Подобно одномерному массиву. Длина двумерного массива также фиксирована. Вы не можете изменить длину массива, я имею в виду. Что количество строк и столбцов останется фиксированным. А 2х2 массив может содержать в общей сложности 4 элемента. И к ним можно получить доступ с помощью индекса строк и столбцов. Например a[0][0] даст вам элементы в первой строке и первом столбце. Аналогично a[1][1] даст вам элементы из 2-й строки и 2-го столбца. Как и обычный массив. Индекс начинается с 0 и заканчивается длиной -1.

Хотя, если вы не знакомы с существенной структурой данных. Такой как массив и связанный список. То я предлагаю вам сначала пройти всеобъемлющий фундаментальный курс. Такой как Структуры данных и алгоритмы: Глубокое погружение с использованием Java на Удемы. Это очень важная тема для любого программиста. Будь то основной разработчик Java или веб-разработчик Java. И вы просто не можете позволить себе игнорировать это.

Как объявить 2-мерный массив в Java

Если вы знаете . Как создать одномерный массив и тот факт. Что многомерные массивы являются просто массивом массива в Java, то создание 2-мерного массива очень легко. Вместо одной скобки вы будете использовать две, например, int[][] является двумерным целочисленным массивом. Вы можете определить 2D массив в Java следующим образом :

int[][] multiples = new int[4][2]; // 2D целочисленный массив с 4 строками и 2 столбцами String[][] cities = new String[3][3]; // 2D Строковый массив с 3 строками и 3 столбцами

Кстати. Когда вы изначально объявляете двумерный массив, вы должны помнить . Чтобы указать первое измерение, например. Следующее объявление массива является незаконным в Java.

 int[][] wrong = new int[][]; // not OK. Необходимо указать 1-е измерение int[][] right = new int[2][]; // OK

Первое выражение вызовет ошибку во время компиляции. С другой стороны. Второе измерение является необязательным. И даже если вы не укажете компилятор не будет жаловаться. Как показано ниже :

String[][] myArray = новая строка[5][]; // OK String[][] YourArray = новая строка[5][4]; // OK

Это возможно . Потому что двумерный массив в Java-это не что иное. Как массив одномерного массива, из-за этого вы также можете создать двумерный массив. Где отдельные одномерные массивы имеют разную длину. Как показано в следующем примере.

класс TwoDimensionalArray { public static void main(String[] args) { Строка[][] приветствие = { {Мистер, Миссис, Мисс}, {Кумар} }; // Mr. Kumar System.out.println(приветствие[0][0] + приветствие[1][0]); // Миссис Кумар System.out.println(приветствие[0][1] + приветствие[1][0Выход из этой программы таков: Мистер Кумар Миссис Кумар

В этом примере вы можете видеть. Что salutation-это 2D-массив. Но его первая строка имеет 3 элемента. В то время как вторая строка имеет только один элемент.

Вы можете получить доступ к элементам двумерного массива либо с помощью обоих индексов. Либо только одного индекса. Например, salutation[0][1] представляет собой одну строку в Java. В то время как salutation[0] представляет собой одномерный массив ( одну строку в 2-мерном массиве). Далее вы можете ознакомиться с Алгоритмами и структурами данных — Часть 1 и 2 курса по Pluralsight. Чтобы узнать больше об этом.

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

До сих пор мы только что объявили и создали массив. Мы не инициализировали их. Это означает , что все элементы массива имеют свои значения по умолчанию , например, ноль для массива интегральных значений , например byte, short, char и int, 0.0 для массивов с плавающей точкой. Таких как float и double, false для булевых массивов и null для массива ссылочного типа. Такого как строковые элементы массива.

Вы можете проверить это . Обратившись к первому элементу двумерного массива в виде кратных[0][0], которые выведут ноль. Как показано ниже:

 boolean[][] boolean = новый boolean[2][2]; System.out.println(booleans[0][0] : + booleans[0][0]); byte[][] bytes = новый байт[2][2]; System.out.println(bytes[0][0] : + bytes[0][0]); char[][] chars = новый char[1][1]; System.out.println(chars[0][0] : + (int)символы[0][0]); короткие[][] шорты = новые короткие[2][2]; System.out.println(short[0][0] : + shorts[0][0]); int[][] ints = new int[3][2]; System.out.println(ints[0][0] : + ints[0][0]); long[][] longs = new long[2][2]; System.out.println(longs[0][0] : + longs[0][0]); float[][] floats = новый float[1][2]; System.out.println(floats[0][0] : + floats[0][0]); double[][] double = новый double[2][2]; System.out.println(double[0][0] : + double[0][0]); Object[][] objects = новый объект[2][2]; System.out.println(objects[0][0] : + objects[0][0]); Выходные булевы[0][0] : ложные байты[0][0] : 0 chars[0][0] : 0 короткий[0][0] : 0 ints[0][0] : 0 longs[0][0] : 0 поплавки[0][0] : 0.0 удваивается[0][0] : 0.0 объекты[0][0] : null

Здесь вы можете увидеть значения по умолчанию для различных типов примитивных массивов. Массив символов, это немного сложно. Потому что если вы печатаете 0 как символ. Он будет печатать нуль-символ. И поэтому я использовал его целочисленное значение с помощью литья в инт.

Теперь есть два способа инициализировать двумерный массив в Java. Либо с помощью литерала массива во время создания или используя вложенный цикл for и. Проходя через каждый элемент.

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

 // инициализация двумерного массива в виде литеральной строки[][] имен = { {Сэм, Смит}, {Роберт, Дельгро}, {Джеймс, Гослинг}, }; // как инициализировать двумерный массив в Java // используя for loop int[][] board = new int[3][3]; for (int i = 0; i  board.length; i++) { для (int j = 0; j  board[i].length; j++) { доска[i][j] = i +

В первом примере мы создали и инициализировали строковый массив с помощью литерала массива. В то время как во втором примере мы создали двумерную плату массива. А затем инициализировали ее путем циклического перебора массива. Вы также можете ознакомиться с Объектно-ориентированным Java-программированием: Структуры данных и вне специализации на Coursera. Чтобы узнать больше о том. Как использовать массив и другие структуры данных в реальных проектах.

Как сделать цикл и распечатать 2D массив на Java

Если вы хотите получить доступ к каждому элементу двумерного массива. То вам нужно выполнить итерацию по двумерному массиву. Используя два цикла for. Почему? потому что для доступа к отдельному элементу из 2D-массива вам нужны два индекса. Вы можете использовать либо advanced для каждого цикла, либо classic для цикла со счетчиком.

Второй более мощный. Поскольку он предоставляет явный счетчик. Который может использоваться в качестве индексов. Для печати содержимого двумерного массива можно использовать либо этот метод. Либо Arrays.deepToString() метод. Который вернет строковую версию всех элементов 2D-массива. Как показано в следующем примере.

импорт java.util.Массивы; /** * Java-программа для инициализации и печати двумерного массива на языке Java. * * @автор WINDOWS 8 * */  основы класса { public static void main(String args[]) { // инициализация двумерного массива в виде литеральной строки[][] имен = { {Джон, Смит}, {Джавин, Пол}, {Джеймс, Гослинг}, }; // как инициализировать двумерный массив в Java // используя for loop int[][] board = new int[3][3]; for (int i = 0; i  board.length; i++) { for (int j = 0; j  board[i].length; j++) { доска[i][j] = i +// теперь давайте напечатаем двумерный массив в Java for (int[] a : board) { for (int i : a) { System.out.print(i + \tSystem.out.println(\n// печать 2D - массива с помощью метода Arrays.deepToString() System.out.println(еще один способ печати 2D-массивов); System.out.println(Arrays.Выход: 0 1 2 1 2 3 2 3 4 еще один способ печати 2D массивов [[0, 1, 2], [1, 2, 3], [2, 3, 4]]

Это был важный трюк. Который нужно было освоить при работе с массивом в Java. Если вы хотите узнать больше таких трюков. Вы также можете присоединиться к специализации Структуры данных и алгоритмы на Coursera. Это бесплатный курс аудита. Но вам нужно заплатить. Если вам нужна сертификация. Этот курс научит вас алгоритмам через программирование и поможет вам продвинуть свою карьеру в области разработки программного обеспечения или науки о данных

Важные моменты о многомерном массиве в Java

1) Java не поддерживает многомерный массив в истинном смысле этого слова. В истинном двумерном массиве все элементы массива занимают непрерывный блок памяти. Но в Java это не так. Вместо этого многомерный массив-это массив массивов.

Например, двумерный массив в Java-это просто массив одномерного массива. Я имею в виду String[][] — это массив String[] или массив массива строк

Эта диаграмма показывает,как именно двумерные массивы хранятся в Java :

Как хранятся двумерные массивы в Java

2) По вышеприведенной причине второе измерение в массиве является необязательным в Java. Вы можете создать двумерный массив без указания обоих измерений. Например int[4][] является допустимым объявлением массива. Он также позволяет создавать многомерные массивы. Строки которой могут варьироваться в длину. Как мы видели. Во втором примере.

3) при создании двумерного или трехмерного массива в Java, первое измерение является обязательным, без компиляции выдаст ошибку, например, тип int[][3] не в порядке, но тип int[3][] ОК.

4) Двумерный массив-очень полезная структура данных в игровом программировании. Вы можете использовать его в играх на основе плиток. Таких как Super Mario Bros. Чтобы рисовать рельеф. Фон и другие объекты. В таких играх. Как Tetris. Чтобы представлять игровые зоны.

Двумерный массив также очень полезен при манипулировании матрицами. Вы можете использовать двумерный массив для представления любой матрицы и выполнения сложения. Умножения и других операций. 2D-массив также может быть использован для представления любого объекта в простом виде с использованием координат X и Y.

Аналогично, 3D-массивы могут использоваться для представления объектов в трехмерном пространстве с использованием координат X. Y и Z. Некоторые из популярных примеров двумерных массивов-шахматная доска, шашечная доска и другие настольные игры. В которых есть слоты. Шахматную доску можно рассматривать как массив из 8 строк и 8 столбцов.

5) Существует несколько способов определения и инициализации многомерного массива в Java. Вы можете либо инициализировать их. Используя в строке объявления. Либо когда-нибудь позже. Используя вложенный цикл for. Вам понадобится столько для цикла. Сколько измерений массива у вас есть. Например, для явной инициализации трехмерного массива вам понадобятся три вложенных цикла for. С другой стороны. Чтобы инициализировать 2D-массив. Вам просто нужно два вложенных цикла for.

6) В двумерном массиве. Таком как int[][] numbers = new int[3][2], есть три строки и два столбца. Вы также можете визуализировать его как 3 целочисленных массива длины 2. Вы можете найти количество строк. Используя numbers.length и количество столбцов. Используя numbers[0].length выражение. Как показано в приведенном ниже примере. Это также очень полезно при итерации по двумерному массиву в Java.

int[][] primes = new int[3][2]; int rows = простые числа.длина; // 3 int cols = простые числа[0].длина; // 2 System.out.printf(int[3][2] имеет строки %s и столбцы %d %n, строки, cols); Вывод : int[3][2] имеет 3 строки и 2 столбца

Это все о многомерном массиве в Java. Это одна из полезных структур данных. Особенно для представления двумерных вещей. Таких как матрица. Также очень полезно создавать игры на основе плиток. Кстати, стоит помнить. Что Java не поддерживает истинный многомерный массив. Вместо этого они представлены как

Дальнейшее изучение
структур данных и алгоритмов: Глубокое погружение с использованием Java
— алгоритмов и структур данных — Часть 1 и 2
Cracking the Coding Interview- 189 Вопросов и решений

Хотите узнать больше о структуре данных массива? Самая важная структура данных для программиста — Если да. То вот еще пара статей. Которые вы можете изучить. Чтобы лучше узнать об массиве:

  • 20+ Проблем со строковым кодированием из интервью (вопросы)
  • Как создать массив из ArrayList строки в Java (учебник)
  • 100+ Проблем структуры данных из интервью (вопросы)
  • Топ-30 Проблем кодирования на основе массивов из интервью (вопросы)
  • Как удалить дубликаты из несортированного массива в Java? (решение)
  • 10 Курсов по структуре данных для взлома Интервью по программированию (курсы)
  • Как найти все пары. Сумма которых равна заданному числу в массиве? (решение)
  • Как реверсировать массив на месте в Java? (решение)
  • 10 Книг По Алгоритмам. Которые Должен Прочитать Каждый Программист ( книги)
  • 10 Бесплатных курсов по структуре данных и алгоритмам для начинающих ( курсы)
  • Топ-20 Поисковых и сортировочных вопросов интервью ( questions)
  • Как сделать бинарное дерево поиска на Java? (решение)
  • 10 (Бесплатных) Онлайн-курсов по изучению структуры данных и алгоритмов на Java (курсы)
  • 50+ Структура данных и алгоритмы Интервью Вопросы (вопросы)

Спасибо, что до сих пор читали эту статью. Если вам нравится этот учебник по двумерному массиву. Пожалуйста. Поделитесь им со своими друзьями и коллегами. Если у вас есть какие-либо вопросы или отзывы. Пожалуйста. Напишите нам.

P. S. — Если вы хотите изучить структуру данных и алгоритмы с нуля или хотите заполнить пробелы в своем понимании и ищете несколько бесплатных курсов. То вы можете проверить этот список бесплатных курсов алгоритмов от Udemy и Coursera для начала.

Повторить
Пропускать
Объявления от