Инициализиране на масиви в Java

1. Общ преглед

В този бърз урок ще видим различните начини, по които можем да инициализираме масив и фините разлики между тях.

2. Един елемент в даден момент

Нека започнем с прост метод, базиран на цикъл:

for (int i = 0; i < array.length; i++) { array[i] = i + 2; }

И нека също да видим как можем да инициализираме многоизмерен масив един по един елемент:

for (int i = 0; i < 2; i++) { for (int j = 0; j < 5; j++) { array[i][j] = j + 1; } }

3. По време на декларацията

Нека сега инициализираме масив по време на декларацията:

String array[] = new String[] { "Toyota", "Mercedes", "BMW", "Volkswagen", "Skoda" };

Докато създаваме екземпляр на масива, не е необходимо да указваме неговия тип:

int array[] = { 1, 2, 3, 4, 5 };

Имайте предвид, че не е възможно да се инициализира масив след декларацията, използвайки този подход. Опитът за това ще доведе до грешка в компилацията.

4. Използване на Arrays.fill ()

Класът java.util.Arrays има няколко метода с име fill (), които приемат различни типове аргументи и запълват целия масив със същата стойност:

long array[] = new long[5]; Arrays.fill(array, 30);

Методът има и няколко алтернативи, които задават диапазон от масив на определена стойност:

int array[] = new int[5]; Arrays.fill(array, 0, 3, -50);

Имайте предвид, че методът приема масива, индекса на първия елемент, броя на елементите и стойността.

5. Използване на Arrays.copyOf ()

Методът Arrays.copyOf () създава нов масив чрез копиране на друг масив. Методът има много претоварвания, които приемат различни видове аргументи.

Да видим бърз пример:

int array[] = { 1, 2, 3, 4, 5 }; int[] copy = Arrays.copyOf(array, 5);

Няколко бележки тук:

  • Методът приема масива източник и дължината на копието, което ще бъде създадено
  • Ако дължината е по-голяма от дължината на масива, който ще се копира, тогава допълнителните елементи ще бъдат инициализирани, като се използват техните стойности по подразбиране
  • Ако източник масива не е инициализиран, а след това NullPointerException получава хвърлен
  • Ако дължината на масива на източника е отрицателна, тогава се изхвърля NegativeArraySizeException

6. Използване на Arrays.setAll ()

Методът Arrays.setAll () задава всички елементи на масив, използвайки функция генератор:

int[] array = new int[20]; Arrays.setAll(array, p -> p > 9 ? 0 : p); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Ако функцията на генератор е нула, тогава се изхвърля NullPointerException .

7. Използване на ArrayUtils.clone ()

И накрая, нека използваме API на ArrayUtils.clone () от Apache Commons Lang 3 - който инициализира масив, като създава директно копие на друг масив:

char[] array = new char[] {'a', 'b', 'c'}; char[] copy = ArrayUtils.clone(array);

Имайте предвид, че този метод е претоварен за всички примитивни типове.

8. Заключение

В тази статия разгледахме различни начини за инициализиране на масиви в Java.

Както винаги, пълната версия на кода е достъпна в GitHub.