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

1D массивы

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

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

int[] arr; //Array declaration
arr = new int[5]; //Sets length of array 'arr' to 5
int[] nums = new int[5]; //Declares & sets length of array to 5

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

int n = arr[0]; //Sets 'n' to the first element in the array 'arr'

Имейте в виду, что массивы представляют собой индексные структуры данных с отсчетом от нуля. Это означает, что первый элемент массива имеет индекс 0, второй элемент массива имеет индекс 1 и так далее. Таким образом, вы должны использовать соответствующий индекс для доступа к нужному элементу.

Ниже показан метод, используемый для инициализации массивов:

Существует два способа инициализации массива, оба из которых достигают одной и той же конечной цели:

Способ 1:

int[] arr = new int[5]; //Declares and sets size of array 'arr'
arr = {1, 2, 3, 4, 5}; //Initializes values of array 'arr'

Метод 2:

int[] arr = {1, 2, 3, 4, 5}; //Declares and initializes array 'arr'

Вы могли заметить, что метод 1 на одну строку длиннее, чем метод 2. Это связано с тем, что когда вы инициализируете массив любым количеством значений, Java автоматически предполагает длину массива на основе количества инициализированных значений. Поэтому вы можете спросить: «Зачем мне вообще использовать первый метод, если метод 2 короче и оба делают одно и то же?» Ну, многие люди предпочитают использовать метод 1 при первом изучении массивов, потому что легче визуализировать и понять процесс создания массива для использования в программе с помощью метода 1. Однако с большим опытом и более сложными программами рекомендуется использовать метод 2.

Пример реализации массива:

Ввод:

int[] arr = {1, 3, 5, 7, 9};
System.out.println("The first element in the array is " + arr[0]);
System.out.println("The second element in the array is " + arr[1]);
System.out.println("The third element in the array is " + arr[2]);

Вывод:

The first element in the array is 1
The second element in the array is 3
The third element in the array is 5

2D-массивы

2D-массивы очень похожи на 1D-массивы в том, что они имеют те же основные функции и характеристики. Например, они обе являются неизменяемыми структурами данных, и доступ к определенным элементам в обеих коллекциях довольно прост. Однако двумерные массивы могут иметь столбцы и строки вместо одной строки в случае одномерного массива.

Чтобы объявить двумерный массив:

int[][] arr = new int[5][10]; //Declares array and sets number of   rows to 5 and columns to 10

Чтобы инициализировать значения в 2D-массиве:

int[][] arr = {
    {1, 2, 3, 4, 5, 6},
    {2, 4, 6, 8},
   };

Приведенный выше код может сначала показаться запутанным, но позвольте мне объяснить его. Обычно каждую строку массива записывают с новой строки, чтобы его было легче визуализировать как полный массив.

Например, результирующий массив из приведенного выше кода будет таким:

[1, 2, 3, 4, 5, 6]
[2, 4, 6, 8]

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

Метод заключается в следующем:

Если бы данный массив выглядел так:

[1, 2, 3, 4, 5, 6]
[2, 4, 6, 8]

Метод поиска элемента с координатой (1, 1) матрицы (массива AKA) приведен ниже:

int x = arr[1][1]; //'x' would equal 4, since that element is at [1]    [1] in the array
  • При доступе к элементам следует помнить, что массивы индексируются с нуля, что означает, что первый столбец массива упоминается как «0-й» столбец массива, и то же самое относится и к строкам.

Печать массивов

Внутри пакета «java.util.*» есть определенные «встроенные» функции для печати массивов, причем наиболее полезными (в частности, для печати массивов) являются «Arrays.toString()» и/или «Arrays.deepToString ()». Как правило, первый используется для более простых массивов (1D-массивы), а второй обычно используется для более сложных массивов (2D-массивы).

1D-массивы:

Код:

System.out.println(Arrays.toString(arr));

Вывод:

[1, 3, 5, 7, 9]

2D-массивы:

Код:

System.out.println(Arrays.deepToString(arr));

Вывод:

[1, 2, 3, 4, 5, 6]
[2, 4, 6, 8]

«Arrays.toString()» и «Arrays.deepToString()» — одни из самых полезных и удивительных функций, на мой взгляд, потому что они избавляют от необходимости кропотливого перебора массива и вывода каждого элемента в формате, который может быть простым для 1D-массивов, но становится сложнее для 2D-массивов. Таким образом, я стараюсь придерживаться своих любимых «Arrays.toString()» и «Arrays.deepToString()», чтобы по возможности распечатывать свои массивы на Java.