Kľúčový rozdiel – ArrayList vs LinkedList
Zbierky sú užitočné na ukladanie údajov. V normálnom poli je veľkosť poľa pevná. Niekedy je potrebné vytvoriť polia, ktoré môžu podľa potreby rásť. Programovacie jazyky ako Java majú zbierky. Je to rámec so sadou tried a rozhraní. Slúži ako kontajner pre skupinu prvkov. Kolekcie umožňujú ukladať, aktualizovať, získavať sadu prvkov. Pomáha pri práci s dátovými štruktúrami, ako sú zoznamy, množiny, stromy a mapy. Zoznam je rozhraním kolekcie frameworku. ArrayList a LinkedList sú dve triedy v rámci kolekcií. Implementujú zberné rozhranie a rozhranie zoznamu. Tento článok pojednáva o rozdieloch medzi ArrayList a LinkedList. ArrayList je trieda, ktorá rozširuje AbstractList a implementuje rozhranie List, ktoré interne používa dynamické pole na ukladanie dátových prvkov. LinkedList je trieda, ktorá rozširuje AbstractSequentialList a implementuje rozhrania List, Deque a Queue, ktoré interne používajú na ukladanie dátových prvkov dvojito prepojený zoznam. To je kľúčový rozdiel medzi ArrayList a LinkedList.
Čo je ArrayList?
Trieda ArrayList sa používa na vytváranie dynamických polí. Na rozdiel od normálneho poľa nie je veľkosť dynamického poľa pevná. Objekt vytvorený pomocou triedy ArrayList môže ukladať množinu prvkov v zozname. Kapacita sa zvyšuje automaticky, takže programátor môže pridávať prvky do zoznamu. Trieda ArrayList rozširuje triedu AbstractList, ktorá implementuje rozhranie List. Preto ArrayList môže použiť metódy rozhrania List. Na prístup k prvkom sa používa metóda get(). Metódu add() možno použiť na pridanie prvkov do zoznamu. Metóda remove() sa používa na odstránenie prvku zo zoznamu. Pozrite si program nižšie.
Obrázok 01: Príklad ArrayList
Podľa vyššie uvedeného programu sa vytvorí objekt ArrayList. Pomocou metódy add je možné pridávať prvky dynamicky. Prvky „A“, „B“, „C“, „D“a „E“sa pridávajú pomocou metódy sčítania. Metóda remove sa používa na odstránenie prvku zo zoznamu. Pri prechode 4 do metódy odstránenia sa zo zoznamu odstráni písmeno v 4. indexe, ktorým je „E“. Pri iterácii cez zoznam pomocou cyklu for sa vytlačia písmená A, B, C a D.
Čo je LinkedList?
Podobne ako ArrayList sa LinkedList používa na dynamické ukladanie dátových prvkov. Objekt vytvorený pomocou triedy LinkedList môže uložiť množinu prvkov v zozname. Kapacita sa zvyšuje automaticky, takže programátor môže pridávať prvky do zoznamu. Interne používa na ukladanie údajov dvojitý prepojený zoznam. V dvojito prepojenom zozname sú údaje uložené ako uzly. Každý uzol obsahuje dve prepojenia. Prvý odkaz ukazuje na predchádzajúci uzol. Ďalší odkaz ukazuje na ďalší uzol v poradí.
Trieda LinkedList rozširuje triedu AbstractSequentialList a implementuje rozhranie List. Preto môže LinkedList používať metódy rozhrania List. Na prístup k prvkom zoznamu možno použiť metódu get(). Metódu add() možno použiť na pridanie prvkov do zoznamu. Metóda remove() sa používa na odstránenie prvku zo zoznamu. Pozrite si program nižšie.
Obrázok 02: Príklad s LinkedList
Podľa vyššie uvedeného programu sa vytvorí objekt LinkedList. Pomocou metódy add je možné pridávať prvky dynamicky. Prvky „A“, „B“, „C“, „D“a „E“sa pridávajú pomocou metódy sčítania. Metóda remove sa používa na odstránenie prvku zo zoznamu. Pri prechode 4 do metódy odstránenia sa písmeno v 4. indexe, ktorým je „E“, odstráni zo zoznamu. Pri opakovaní pomocou cyklu for sa vytlačia písmená A, B, C a D.
Aké sú podobnosti medzi zoznamom ArrayList a LinkedList?
- ArrayList aj LinkedList implementujú rozhranie List.
- ArrayList aj LinkedList môžu obsahovať duplicitné prvky.
- ArrayList aj LinkedList zachovávajú poradie vloženia.
Aký je rozdiel medzi ArrayList a LinkedList?
ArrayList vs LinkedList |
|
ArrayList je trieda, ktorá rozširuje AbstractList a implementuje rozhranie List, ktoré interne používa dynamické pole na ukladanie dátových prvkov. | LinkedList je trieda, ktorá rozširuje AbstractSequentialList a implementuje rozhrania List, Deque, Queue, ktoré interne používajú na ukladanie dátových prvkov dvojito prepojený zoznam. |
Prístup k prvkom | |
Prístup k prvkom ArrayList je rýchlejší ako k LinkedList. | Prístup k prvkom LinkedList je pomalší ako k ArrayList. |
Manipulačné prvky | |
Manipulácia s prvkami ArrayList je pomalšia ako s LinkedList. | Manipulácia s prvkami LinkedList je rýchlejšia ako s ArrayList. |
Správanie | |
ArrayList funguje ako zoznam. | LinkedList funguje ako zoznam a fronta. |
Summary – ArrayList vs LinkedList
Kolekčný rámec umožňuje prácu s dátovými štruktúrami, ako sú zoznamy, stromy, mapy a súbory. Zoznam je rozhraním rámca kolekcie. Tento článok diskutoval o rozdieloch medzi ArrayList a LinkedList. ArrayList je trieda, ktorá rozširuje AbstractList a implementuje rozhranie List, ktoré interne používa dynamické pole na ukladanie dátových prvkov. LinkedList je trieda, ktorá rozširuje AbstractSequentialList a implementuje rozhrania List, Deque, Queue, ktorá interne používa dvojito prepojený zoznam na ukladanie dátových prvkov. To je rozdiel medzi ArrayList a LinkedList.