Mind az Array, mind az ArrayList index alapú adatszerkezetek, amelyeket gyakran használnak a Java programokban. Fogalmi szempontból az ArrayList-t belső tömbök támogatják, azonban a kettő közötti különbség megértése kulcsa ahhoz, hogy nagyszerű Java fejlesztővé váljon. Ez meglehetősen alapvető lépés a kezdéshez, különösen a kezdőknek, akik éppen megkezdték a kódolást. Bár mindkettőt elemeket tárolják a Java-ban, amelyek akár primitívok, akár objektumok lehetnek, meglehetõsen megoszlanak a különbségek a funkcionalitás és a teljesítmény szempontjából. A kettő közötti fő különbség az, hogy az Array statikus, míg az ArrayList dinamikus jellegű. Ez a cikk összehasonlítja a kettőt a különféle szempontok alapján, így választhat egyet a másik felett.
Az egyik legnagyobb és észrevehető különbség a két adatszerkezet között az, hogy az Array statikus jellegű, azaz rögzített hosszúságú adattípus, míg az ArrayList dinamikus jellegű, azaz változó hosszúságú adatszerkezet. Technikai szempontból a tömb hosszát nem lehet megváltoztatni vagy módosítani, ha a tömb objektum létrehozásra kerül. Ugyanazon adattípus elemek szekvenciális gyűjteményét tartalmazza. A Java tömbök másképp működnek, mint a C / C ++. Az ArrayList viszont átméretezi magát, és a tömbök szükség szerint növekedhetnek. Mivel ez egy dinamikus adatszerkezet, az elemek hozzáadhatók és eltávolíthatók a listából.
A Java-ban nem hozhat létre általános interfészosztályok tömbjeit, így a tömbök és a generikumok nem járnak együtt, így lehetetlenné válni a generikus tömb létrehozása azon alapvető ok miatt, hogy a tömbök kovariánsok, míg a generikusok változatlanok. Míg az Array rögzített hosszúságú adatszerkezet, ugyanabba az osztályba tartozó objektumokat vagy az adott adattípus primitívjeit tartalmazza. Tehát, ha megpróbál eltérő adattípust tárolni, mint amelyet a tömbobjektum létrehozásakor megadottól eltér, akkor egyszerűen az „ArrayStoreException” fájlt dobja. Az ArrayList viszont támogatja a Generics-et a típusbiztonság biztosítása érdekében.
Az olyan primitív adattípusok, mint az int, dupla, hosszú és char, nem engedélyezettek az ArrayList alkalmazásban. Inkább tárgyakat tart, és a primitíveket nem tekintik objektumoknak a Java-ban. A tömbök viszont képes primitíveket és objektumokat is tárolni a Java-ban, mivel ez a Java egyik leghatékonyabb adatstruktúrája az objektumok tárolására. Ez egy összesített adattípus, amelyet objektumok tárolására terveztek, amelyek lehetnek azonosak vagy eltérőek.
A tömb hosszának megszerzéséhez a kódnak hozzá kell férnie a length attribútumhoz, mert a tömbön történő műveletek végrehajtásához tudnia kell a hosszt. Míg az ArrayList a size () módszert használja az ArrayList méretének meghatározására, ez inkább különbözik a tömb hosszának meghatározásától. A size () metódus attribútum meghatározza az ArrayList elemek számát, amely viszont az ArrayList kapacitása.
Például:
nyilvános osztály ArrayLengthTest
nyilvános statikus void main (karakterlánc [] args)
ArrayList arrList = új ArrayList ();
Húros [] elemek = “Egy”, “Két”, “Három”;
(String str: tételek)
arrList.add (str);
int méret = tételek méret ();
System.out.println (méret);
Az Array egy Java natív programozó összetevő, amelyet dinamikusan hoznak létre, és hozzárendelési operátort használnak az elemek tartására, míg az ArrayList add () attribútumot használ az elemek beszúrására. Az ArrayList egy osztály a Java keretrendszeréből, amely megadott módszerek halmazát használja az elemek eléréséhez és módosításához. Az ArrayList mérete dinamikusan növelhető vagy csökkenthető. A tömb elemeit a szomszédos memóriában tárolják, és mérete statikus marad az egész.
Noha mindkét adatszerkezet hasonló típusú teljesítményt nyújt, mint az ArrayList mellett az Arrays, az egyiknek van egy kis előnye a másikkal szemben, elsősorban a CPU idő és a memória felhasználása szempontjából. Tegyük fel, hogy ha ismeri a tömb méretét, akkor valószínűleg elmész az ArrayList-hez. Az Array-n történő iterálás azonban egy kicsit gyorsabb, mint az ArrayList-en történő iterálás. Ha a program nagyszámú primitívből áll, akkor a tömb mind az idő, mind a memória szempontjából szignifikánsan jobb teljesítményt nyújt, mint az ArrayList. A tömbök alacsony szintű programozási nyelv, amelyet fel lehet használni a gyűjtemények megvalósításában. A teljesítmény azonban az elvégzett művelettől függően változhat.
Sor | Tömb lista |
A tömb egy rögzített hosszúságú adatszerkezet, amelynek hossza nem módosítható, ha a tömbobjektum létrehozásra kerül. | Az ArrayList dinamikus természetű, ami azt jelenti, hogy átméretezheti magát, hogy növekedjen, ha szükséges. |
A tömb mérete statikus marad a program során. | Az ArrayList mérete dinamikusan növekedhet a terheléstől és a kapacitástól függően. |
Az elemek tárolására hozzárendelési operátort használ. | Az add () attribútumot használja az elemek beszúrásához. |
Tartalmazhat primitíveket, valamint azonos vagy eltérő adattípusú objektumokat. | A primitívek nem engedélyezettek az ArrayList alkalmazásban. Csak objektumtípusokat tartalmazhat. |
A tömbök és a generikus termékek nem járnak együtt. | A generikus termékek használata engedélyezett az ArrayList alkalmazásban. |
A tömbök lehetnek többdimenziós. | Az ArrayList egydimenziós. |
Ez egy natív programozási összetevő, ahol az elemeket a szomszédos memóriákban tárolják. | Ez egy osztály a Java gyűjteménykeretéből, ahol az objektumokat soha nem tárolják szomszédos helyeken. |
A hossza változó segítségével határozza meg a tömb hosszát. | A Size () metódus az ArrayList méretének meghatározására szolgál. |
Kevesebb memóriát igényel, mint az ArrayList, a megadott elemek vagy objektumok tárolására. | Az objektumok tárolására több memória szükséges, mint a tömb. |
A tömbön keresztüli iterálás gyorsabb, mint az ArrayList feletti iterálás. | Az ArrayList feletti párosítás a teljesítmény szempontjából lényegesen lassabb. |
Noha egyesek azt gondolhatják, hogy a tömbök végrehajtása egy programban gyorsabban érhet el eredményeket, mint ha ugyanezt tenné az ArrayLists programmal azon egyszerű ok miatt, hogy a tömbök alacsony szintű adatszerkezettel bírnak, a teljesítmény a végrehajtott művelettől függően változhat. Nos, egy tömb hossza rögzített, míg az ArrayList méretét dinamikusan növelhetjük vagy csökkenthetjük, tehát az ArrayList funkcionalitása szempontjából kicsivel rendelkezik a tömb felett. A különbségek ellenére azonban vannak hasonlóságok is. Mindkettő index alapú adatstruktúra a Java-ban, amely lehetővé teszi az objektumok tárolását, és mindkettő null értékeket és másolatot is lehetővé tesz. Nos, ha előzőleg tudja az objektumok méretét, tömbtel kell mennie, és ha nem biztos benne a méretében, lépjen az ArrayList alkalmazással.