Inicializácia polí v Jave

1. Prehľad

V tomto rýchlom výučbe sa pozrieme na rôzne spôsoby, ako môžeme inicializovať pole, a na jemné rozdiely medzi nimi.

2. Jeden prvok po druhom

Začnime jednoduchou metódou založenou na slučke:

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

A pozrime sa tiež, ako môžeme inicializovať viacrozmerné pole po jednom prvku:

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

3. V čase vyhlásenia

Poďme teraz inicializovať pole v čase deklarácie:

Reťazcové pole [] = nové Reťazec [] {"Toyota", "Mercedes", "BMW", "Volkswagen", "Škoda"};

Pri vytváraní inštancie poľa nemusíme určovať jeho typ:

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

Upozorňujeme, že pomocou tohto prístupu nie je možné inicializovať pole po deklarácii. Pokus o to bude mať za následok chybu kompilácie.

4. Používanie Arrays.fill ()

The java.util.Arrays trieda má pomenovaných niekoľko metód vyplniť () ktoré prijímajú rôzne typy argumentov a vyplňujú celé pole rovnakou hodnotou:

dlhé pole [] = nové dlhé [5]; Arrays.fill (pole, 30);

Metóda má tiež niekoľko alternatív, ktoré nastavujú rozsah poľa na konkrétnu hodnotu:

int pole [] = nové int [5]; Arrays.fill (pole, 0, 3, -50);

Metóda akceptuje pole, index prvého prvku, počet prvkov a hodnotu.

5. Používanie Arrays.copyOf ()

Metóda Arrays.copyOf () vytvorí nové pole skopírovaním iného poľa. Metóda má veľa preťažení, ktoré prijímajú rôzne typy argumentov.

Pozrime sa na krátky príklad:

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

Niekoľko poznámok tu:

  • Metóda akceptuje zdrojové pole a dĺžku kópie, ktorá sa má vytvoriť
  • Ak je dĺžka väčšia ako dĺžka poľa, ktoré sa má kopírovať, ďalšie prvky sa inicializujú pomocou svojich predvolených hodnôt
  • Ak zdrojové pole nebolo inicializované, potom a NullPointerException dostane vyhodený
  • Ak je dĺžka zdrojového poľa záporná, potom a NegativeArraySizeException je hodená

6. Používanie Arrays.setAll ()

Metóda Arrays.setAll () nastaví všetky prvky poľa pomocou funkcie generátora:

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

Ak je funkcia generátora nulová, potom a NullPointerException je hodená.

7. Používanie ArrayUtils.clone ()

Nakoniec využime ArrayUtils.clone () API z Apache Commons Lang 3 - ktoré inicializuje pole vytvorením priamej kópie iného poľa:

char [] pole = nový char [] {'a', 'b', 'c'}; char [] copy = ArrayUtils.clone (pole);

Upozorňujeme, že táto metóda je preťažená pre všetky primitívne typy.

8. Záver

V tomto článku sme preskúmali rôzne spôsoby inicializácie polí v Jave.

Plná verzia kódu je ako vždy k dispozícii na GitHub.