Inițializarea matricilor în Java

1. Prezentare generală

În acest tutorial rapid, vom vedea diferitele moduri în care putem inițializa o matrice și diferențele subtile dintre acestea.

2. Un element la un moment dat

Să începem cu o metodă simplă, bazată pe buclă:

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

Și să vedem, de asemenea, cum putem inițializa o matrice multidimensională câte un element la un moment dat:

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

3. La momentul declarării

Să inițializăm acum o matrice în momentul declarării:

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

În timp ce instanțiem matricea, nu trebuie să îi specificăm tipul:

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

Rețineți că nu este posibilă inițializarea unui tablou după declarație folosind această abordare. O încercare de a face acest lucru va duce la o eroare de compilare.

4. Utilizarea Arrays.fill ()

Java.util.Arrays clasa are mai multe metode numite de umplere () , care acceptă diferite tipuri de argumente și umple întreaga matrice cu aceeași valoare:

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

Metoda are, de asemenea, mai multe alternative care stabilesc o gamă dintr-o matrice la o anumită valoare:

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

Rețineți că metoda acceptă matricea, indexul primului element, numărul de elemente și valoarea.

5. Utilizarea Arrays.copyOf ()

Metoda Arrays.copyOf () creează o nouă matrice prin copierea unei alte matrice. Metoda are multe suprasolicitări care acceptă diferite tipuri de argumente.

Să vedem un exemplu rapid:

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

Câteva note aici:

  • Metoda acceptă matricea sursă și lungimea copiei de creat
  • Dacă lungimea este mai mare decât lungimea tabloului de copiat, atunci elementele suplimentare vor fi inițializate folosind valorile lor implicite
  • Dacă matricea sursă nu a fost inițializată, atunci se aruncă o NullPointerException
  • Dacă lungimea matricei sursă este negativă, atunci este aruncată o NegativeArraySizeException

6. Utilizarea Arrays.setAll ()

Metoda Arrays.setAll () setează toate elementele unui tablou utilizând o funcție generator:

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]

Dacă funcția generator este nulă, atunci se lansează o excepție NullPointerException .

7. Utilizarea ArrayUtils.clone ()

În cele din urmă, să folosim API-ul ArrayUtils.clone () din Apache Commons Lang 3 - care inițializează un tablou prin crearea unei copii directe a unui alt tablou:

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

Rețineți că această metodă este supraîncărcată pentru toate tipurile primitive.

8. Concluzie

În acest articol, am explorat diferite moduri de inițializare a matricelor în Java.

Ca întotdeauna, versiunea completă a codului este disponibilă pe GitHub.