Tömbök inicializálása Java-ban

1. Áttekintés

Ebben a gyors bemutatóban megnézzük a tömb különféle inicializálási módjait és az ezek közötti finom különbségeket.

2. Egyszerre egy elem

Kezdjük egy egyszerű, hurokalapú módszerrel:

for (int i = 0; i <tömb.hossz; i ++) {tömb [i] = i + 2; }

Lássuk azt is, hogyan inicializálhatunk egy többdimenziós tömböt egyenként:

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

3. A nyilatkozat idején

Inicializáljunk most egy tömböt a deklaráláskor:

String tömb [] = új húr [] {"Toyota", "Mercedes", "BMW", "Volkswagen", "Skoda"};

A tömb példányosítása közben nem kell megadnunk a típusát:

int tömb [] = {1, 2, 3, 4, 5};

Ne feledje, hogy a deklaráció után nem lehet tömböt inicializálni ezzel a megközelítéssel. Ennek megkísérlése fordítási hibát eredményez.

4. Használata Arrays.fill ()

A java.util.A Arrays osztály több módszert nevez meg tölt() amelyek különböző típusú argumentumokat fogadnak el, és az egész tömböt ugyanazzal az értékkel töltik meg:

hosszú tömb [] = új hosszú [5]; Tömbök.töltés (tömb, 30);

A módszernek számos alternatívája is van, amelyek egy tömb tartományát egy adott értékre állítják:

int tömb [] = új int [5]; Tömbök.kitöltés (tömb, 0, 3, -50);

Vegye figyelembe, hogy a módszer elfogadja a tömböt, az első elem indexét, az elemek számát és az értéket.

5. Használata Arrays.copyOf ()

A módszer, a metódus Arrays.copyOf () létrehoz egy új tömböt egy másik tömb másolásával. A módszer sok túlterheléssel rendelkezik, amelyek különböző típusú argumentumokat fogadnak el.

Lássunk egy gyors példát:

int tömb [] = {1, 2, 3, 4, 5}; int [] copy = tömbök.copyOf (tömb, 5);

Néhány megjegyzés itt:

  • A módszer elfogadja a forrás tömböt és a létrehozandó másolat hosszát
  • Ha a hossz nagyobb, mint a másolandó tömb hossza, akkor az extra elemeket az alapértelmezett értékeik alapján inicializáljuk
  • Ha a forrás tömböt nem inicializálták, akkor a NullPointerException eldobják
  • Ha a forrás tömb hossza negatív, akkor a NegativeArraySizeException dobják

6. Használata Arrays.setAll ()

A módszer, a metódus Arrays.setAll () egy tömb összes elemét generátorfüggvény segítségével állítja be:

int [] tömb = új int [20]; Arrays.setAll (tömb, 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]

Ha a generátor függvény null, akkor a NullPointerException dobják.

7. Használata ArrayUtils.clone ()

Végül használjuk ki a ArrayUtils.clone () API az Apache Commons Lang 3-ból - amely inicializál egy tömböt egy másik tömb közvetlen másolatának létrehozásával:

char [] tömb = új char [] {'a', 'b', 'c'}; char [] copy = ArrayUtils.clone (tömb);

Vegye figyelembe, hogy ez a módszer túlterhelt minden primitív típusnál.

8. Következtetés

Ebben a cikkben a tömbök inicializálásának különböző módjait vizsgáltuk meg a Java-ban.

Mint mindig, a kód teljes verziója elérhető a GitHubon.