Inicijalizacija nizova u Javi

1. Pregled

U ovom brzom uputstvu vidjet ćemo različite načine na koje možemo inicijalizirati niz i suptilne razlike između njih.

2. Jedan po jedan element

Počnimo s jednostavnom metodom koja se temelji na petlji:

za (int i = 0; i <niz.duljina; i ++) {niz [i] = i + 2; }

A pogledajmo i kako možemo inicijalizirati višedimenzionalni niz jedan po jedan element:

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

3. U vrijeme izjave

Ajmo sada inicijalizirati niz u vrijeme deklaracije:

Niz nizova [] = novi niz [] {"Toyota", "Mercedes", "BMW", "Volkswagen", "Škoda"};

Tijekom instanciranja niza ne moramo navesti njegov tip:

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

Primijetite da nije moguće inicijalizirati niz nakon deklaracije pomoću ovog pristupa. Pokušaj da se to učini rezultirat će pogreškom u kompilaciji.

4. Korištenje Nizovi.fill ()

The java.util.Arrays razred ima nekoliko imenovanih metoda ispuniti () koji prihvaćaju različite vrste argumenata i ispunjavaju cijeli niz istom vrijednošću:

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

Metoda također ima nekoliko alternativa koje postavljaju raspon niza na određenu vrijednost:

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

Napominjemo da metoda prihvaća niz, indeks prvog elementa, broj elemenata i vrijednost.

5. Korištenje Arrays.copyOf ()

Metoda Arrays.copyOf () stvara novi niz kopiranjem drugog polja. Metoda ima mnogo preopterećenja koja prihvaćaju različite vrste argumenata.

Pogledajmo brzi primjer:

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

Nekoliko napomena ovdje:

  • Metoda prihvaća izvorni niz i duljinu kopije koju treba stvoriti
  • Ako je duljina veća od duljine niza koji se kopira, tada će se dodatni elementi inicijalizirati pomoću njihovih zadanih vrijednosti
  • Ako izvorni niz nije inicijaliziran, tada a NullPointerException bude bačen
  • Ako je duljina niza izvora negativna, tada a NegativeArraySizeException baca se

6. Korištenje Arrays.setAll ()

Metoda Arrays.setAll () postavlja sve elemente niza pomoću funkcije generatora:

int [] niz = novi int [20]; Arrays.setAll (niz, 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]

Ako je funkcija generatora nula, a NullPointerException baca se.

7. Korištenje ArrayUtils.clone ()

Napokon, iskoristimo ArrayUtils.clone () API iz Apache Commons Lang 3 - koji inicijalizira niz stvaranjem izravne kopije drugog polja:

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

Imajte na umu da je ova metoda preopterećena za sve primitivne tipove.

8. Zaključak

U ovom smo članku istražili različite načine inicijalizacije nizova u Javi.

Kao i uvijek, puna verzija koda dostupna je na GitHub-u.