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.