Különbség az ArrayList és a LinkedList között a Java-ban
Tartalom
Az ArrayList és a LinkedList a Gyűjtemény osztályok, és mindkettő megvalósítja a Lista felület. Az ArrayList osztály létrehozza azt a listát, amelyet a tárol egy a dinamikus sor amely növekszik vagy csökken, amikor az elemeket hozzáadják vagy törlik tőle. A LinkedList létrehozza azt a listát is, amelyet belső tárol a Kétszeresen összekapcsolt Lista. Mindkét osztályt használják az elemek tárolására a listában, de a legnagyobb különbség az ArrayList és a LinkedList osztályok között az, hogy Tömb lista véletlenszerű hozzáférést tesz lehetővé a listában szereplő elemekhez, amint az működik index alapú adatszerkezet. Másrészt a láncolt lista nem engedélyezi a véletlenszerű hozzáférést, mivel nincs indexe az elemekhez való közvetlen hozzáféréshez, át kell haladnia a listán az elem lekéréséhez vagy eléréséhez.
Beszéljünk néhány további különbségről az ArrayList és a LinkedList között az alább bemutatott összehasonlító táblázat segítségével.
- Összehasonlító táblázat
- Meghatározás
- Főbb különbségek
- Következtetés
Összehasonlító táblázat
Az összehasonlítás alapja | Tömb lista | láncolt lista |
---|---|---|
Alapvető | Az ArrayList véletlenszerű hozzáférést tesz lehetővé a lista elemekhez. | A LinkedList nem engedélyezi a lista elemeinek véletlenszerű hozzáférését. |
Adat szerkezete | Az elemek tárolására használt belső struktúra a dinamikus tömb. | Az elemek tárolására használt belső struktúra kétszeresen összekapcsolt lista. |
kiterjeszti | Az ArrayList kiterjeszti az AbstarctList osztályt. | A LinkedList kiterjeszti az AbstractSequentialList oldalt. |
munkagépek | Az AbstractList végrehajtja a lista felületet. | A LinkedList végrehajtja a Lista, a Deque, a Queue-t. |
Hozzáférés | A lista elemeinek gyorsabb elérése az ArrayList alkalmazásban. | A LinkedList lassabban érinti el a lista elemeit. |
Manipuláció | A lista elemeivel történő manipulálás lassabb az ArrayList alkalmazásban. | A listában szereplő elemekkel történő manipuláció gyorsabb a LinkedList alkalmazásban. |
Viselkedés | Az ArraylList Listaként viselkedik, amikor végrehajtja a listát. | A LinkedList úgy viselkedik, mint a Lista, valamint a Sor, mivel végrehajtja mind a Lista, mind a Sor sorát. |
Az ArrayList meghatározása
Az AbstractList osztályt a Gyűjtési keret. Ez kiterjed AbstarctList és munkagépek Lista felület. Az ArrayList használja dinamikus tömb vagyis a változó hosszúságú tömb belső adatszerkezetként az elemek tárolására a listában. ArrayList igénye felmerül, mivel a java tömb rögzített hosszúságú. Tehát nem növekszik vagy nem zsugorodhat, mivel az elemeket hozzáadják vagy törlik a tömbből. Tehát előre meg kell tudnia a szükséges tömb méretét. Az ArrayList osztály használatával megvalósított tömblista azonban növekszik és csökkenhet, mivel az elemeket hozzáadják vagy törlik a tömbből.
Az ArrayList segítségével megvalósított tömblista elérhető véletlenszerűen mivel az ArrayList index alapon működik. Tehát az index megismerésével közvetlenül hozzáférhet a lista elemeihez. Az ArrayList három építője van:
ArrayList () ArrayList (A gyűjtemény <? Kiterjesztése E> c) ArrayList (int kapacitás)
Az első A konstruktor üres tömblistát hajt végre. Az második A konstruktor a következő használatával inicializált tömblistát valósít meg: Gyűjtemény c elemekkel. Az harmadik A konstruktor tömblistát valósít meg a kapacitás amelyet az érvelés tartalmaz. Az ArrayList-rel együttműködve néha szükség lesz a Collection ArrayList tömbbé konvertálására. Hívással lehet megtenni toArray ().
A LinkedList meghatározása
Mint az ArrayList, láncolt lista szintén a Gyűjtemény osztály felhasználások kétszeresen kapcsolt lista belső adatszerkezetként az elemek tárolására a listában. A LinkedList osztály kibővül AbstractSequentialList és végrehajtja a Lista, Deque és sorban áll interfészek. A LinkedList segítségével megvalósított csatolt lista nem érhető el véletlenszerűen. Ha valamelyik elemet ki akarja venni a listából, meg kell ismételnie a listát az elem kereséséhez.
Két építész van a LinkedList osztályban.
LinkedList () LinkedList (Gyűjtemény <? Kiterjesztése E> c)
Az első A konstruktor létrehoz egy üres csatolt listát. Az második A konstruktor összekapcsolt listát készít, amelyet a Gyűjtemény c.
A LinkedListben a lista kezelése egyszerű és gyors. Ennek oka az, hogy ha hozzáad egy elemet a listába, vagy törli azt, akkor nincs szükség az elemek eltolására, mint az ArrayList-ben. De a hozzáférés lassabb, mivel nincs indexe az elemek közvetlen eléréséhez.
- Az ArrayList által végrehajtott lista véletlenszerűen érhető el, mert az ArrayList átveszi a tömb index alapú adatstruktúráját. Másrészt a LinkedList által végrehajtott listához nem lehet véletlenszerűen hozzáférni, mivel a lista egy elemének lekérdezéséhez vagy eléréséhez meg kell haladnia a listát.
- Az ArrayList által a lista elemeinek tárolására használt belső adatszerkezet a dinamikus tömb amelyek növekedhetnek vagy összehúzódhatnak, amikor az elemeket hozzáadják vagy törlik a listáról. A LinkedList által a listában szereplő elemek tárolására használt belső adatszerkezet azonban az kétszeresen kapcsolt lista.
- A ArrayList kiterjeszti a AbstractList osztály, amely szintén Gyűjtemény osztály, míg a LinkedList osztály kiterjed AbstractSequentialList osztály, amely ismét Gyűjtemény osztály.
- ArrayList osztályú eszközök Lista felület, míg a LinkedList osztály megvalósítja Lista, sorban állés Deque interfészek.
- Az ArrayList segítségével megvalósított elemek elérése a listából gyorsabb mivel index-alapú adatszerkezettel rendelkezik. Másrészről nincs index alapú struktúra a LinkledList listában végrehajtott listában. Ezért egy iterátort alkalmazunk a lista fölé annak a elemnek a eléréséhez, amely hozzáférést tesz lehetővé lassabb a LinkedListben.
- A Manipuláció Manipuláció az ArrayList használatával végrehajtott listában, mert amikor egy elemet hozzáadunk vagy töröl a listáról, a lista elemei eltolódnak a változás figyelembevétele érdekében. Másrészt a manipuláció gyorsabb a LinkedList által végrehajtott listában, mivel ehhez nem szükséges a listában szereplő elemek eltolása az elemek hozzáadásakor vagy törlésekor.
- Az ArrayList úgy viselkedik, mint a lista mivel a Lista felületet valósítja meg, míg a LinkedList mint lista és sorban áll mivel mindkettőt végrehajtja a Lista és a Sorban.
Következtetés:
Ha a listában szereplő elemek gyakran kerülnek hozzáadásra vagy törlésre, akkor a LinkedList-t kell használni, mivel ez jobban teljesít a manipuláció során. Ha gyakori keresést alkalmaznak a listára, akkor az ArrayList a legjobb választás, mivel jobban teljesít, miközben a listáról elemeket keres.