Ініціалізація масивів у 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]

Якщо функція генератора має значення null, тоді викидається 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.