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.