CodeGym /Java blog /Véletlen /Array konvertálása ArrayList-re Java nyelven
John Squirrels
Szint
San Francisco

Array konvertálása ArrayList-re Java nyelven

Megjelent a csoportban
Szia! A mai leckében arról fogunk beszélni, hogyan lehet inicializálni egy tömböt Java nyelven, és hogyan lehet a tömböt tömblistává alakítani. A tömbök a Java Container osztályának kiterjesztései, és hasznosak lehetnek primitív adattípusok ideiglenes tárolására, ha az adatok mennyisége konkrétan ismert. De a tömbök létrehozásukkor statikusak, ami azt jelenti, hogy amikor létrehoz egy tömböt, nem módosíthatja a benne lévő elemek számát. Ne feledje, hogyan kell inicializálni egy tömböt java-ban; ez így néz ki:

datatype[] isArray;
Ahol az adattípus bármilyen primitív adattípus, például int, float, long vagy akár String. A nyilatkozat után zárójeleket is elhelyezhet, így:

datatype isArray[];
Tehát hogyan vesszük ezt a meghatározott számú elemet tartalmazó statikus tömböt és alakítsuk át ArrayListté? Nos, először nézzük meg, mi az ArrayList.

Az ArrayList

Egy ArrayList név hasonló lehet egy tömbhöz, de teljesen másképp kezelik. Ez azért van, mert az ArrayList nem a Container osztályt, hanem a List osztályt terjeszti ki. Ez pedig azt jelenti, hogy mindent másképp kezelnek. Egyrészt, mivel ez egy lista, másképpen manipulálhatja. Az ArrayList méretét növelheti vagy csökkentheti az add(element) paranccsal , amely az elemet a Lista végére helyezi, és szükség esetén eggyel növeli. Vagy használhatja a trimToSize()amely eltávolítja az üres indexeket a végén, és az ArrayList-et az aktuális méretre vágja. Láthatja tehát, hogy van néhány előnye az ArrayList használatának a tömb helyett. Ezután bemutatunk két módszert arra, hogyan konvertálhat egy tömbből ArrayList-be, és hogyan léphet vissza, ha szükséges.

Áttérés az Array-ről az ArrayList-re és az ArrayList-ről az Array-re Java-ban

Tehát tegyük fel, hogy írt egy programot, amely leltárt vezet arról, hogy a cége hány anyát és csavart kínál a macskafák javításához. Évek óta csak 30 különböző típusra volt szüksége belőlük, így könnyű volt egy tömb segítségével követni. De most van egy új ügyfele, aki további 5 típus készletét kéri. Hogyan változtathatja meg a programját, és megtarthatja az összes adatot, ÉS hogyan akadályozhatja meg, hogy ezt újra meg kelljen tennie, amikor másik klienst vesz fel? Úgy van! Egy ArrayList! Tehát hogyan konvertálhat egy Java tömböt ArrayListté? Három módszer létezik. Az .asList() metódus használata A Java tömbök egy nagyszerű eszközzel rendelkeznek, amelyet akkor láthatunk, ha megnézzük az .asList() nevű API-t . Szóval csak ebbe írhatnád:

boltInventory.asList(bolts);
Ezzel a módszerrel az a probléma, hogy nem hoz létre valódi ArrayList-et. Ez egy olyan listát hoz létre, amely rögzített méretű és változtathatatlan. Így továbbra sem változtathatja meg dinamikusan a méretet. Az elemek hozzáadásának vagy eltávolításának kísérlete kivételt okoz. Tehát bár ennek megvan a maga haszna, ez nem igazi konverzió. De ezt használhatjuk. Az .asList() használata argumentumként Ez a második módja annak, hogy egy tömböt listává alakítsunk Java nyelven. Mivel az .asList() metódus létrehoz egy listát, ezt felhasználhatjuk arra, hogy hivatkozást adjunk át a tényleges ArrayListünkre. Az ArrayList inicializálása a következőképpen történik:

ArrayList<Integer> boltsInventory = new ArrayList<Integer>();
Ezzel létrejön egy ArrayList, amely tíz üres cellát tartalmaz. A végén lévő () azonban használható argumentum átadására az ArrayList kitöltéséhez. Tehát az .asList metódussal kombinálva a következőket kapja:

ArrayList<Integer> boltsInventory = new ArrayList<Integer>(Arrays.asList(bolts));
Ez átadja az .asList() metódussal létrehozott listát az ArrayList-nek, így mostantól igény szerint dinamikusan módosíthatja azt. A Collections.addAll() metódus használata A tömb ArrayListté alakításának másik módja ennek a módszernek a használata. A tömb tartalmát átadja az ArrayList-nek. Ennek a módszernek az általános szintaxisa:

Collections.addAll(c, T);
Ahol c az úti cél és T az, amit áthalad. Tehát a mi példánkban a szintaxis így néz ki:

ArrayList<Integer> boltsInventory = new ArrayList<Integer>():
Collections.addAll(boltsInventory, bolts);
Ezzel az Array csavarok teljes tartalma átkerül az új ArrayList-be. ArrayList konvertálása tömbbé Előfordulhat, hogy egy ArrayList-et tömbbé kell konvertálnia Java nyelven. Ha igen, az ArrayList rendelkezik egy .toArray(a) metódussal , ahol a a cél. Tehát példánkban a szintaxis a következő lenne:

Integer boltsInventoryArray[] = new Integer{boltsInventory.size()];
// this ensures the newly created array is of the same size as the ArrayList
boltsInventoryArray = boltsInventory.toArray(boltsInventoryArray);
Ha egy listát Java-ban tömbre változtat, egy mély másolatot hoz létre. Ez azt jelenti, hogy minden hivatkozás a tömbre különbözik az ArrayList hivatkozásoktól. Így az ArrayListben tárolt adatok megváltoztatása nélkül módosíthatja a tömbben lévő adatokat. Hasznos a java listák tömbbé alakítása, amikor adatok tesztelésére van szükség.

Következtetés

A tömbök nagyon hasznosak a kisebb adatkészletek gyors eléréséhez és gyors manipulálásához, de a méretük megváltoztatásának képtelensége miatt gyorsan veszítenek hatékonyságukból a hosszú távú használat során. Az ArrayList ezt a rugalmasságot és a csomópontok szükség szerinti beillesztésének és eltávolításának képességét biztosítja. Ha megtanulja, hogyan konvertálhat egy Java tömböt listává, az javítja a programok általános hatékonyságát, és javítja azok futási idejét is.
Hozzászólások
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION