Klíčový rozdíl – ArrayList vs LinkedList
Sbírky jsou užitečné pro ukládání dat. V normálním poli je velikost pole pevná. Někdy je nutné vytvořit pole, která mohou růst podle potřeby. Programovací jazyky jako Java mají kolekce. Je to framework se sadou tříd a rozhraní. Slouží jako kontejner pro skupinu prvků. Kolekce umožňují ukládat, aktualizovat, získávat sadu prvků. Pomáhá pracovat s datovými strukturami, jako jsou seznamy, sady, stromy a mapy. Seznam je rozhraním Collection frameworku. ArrayList a LinkedList jsou dvě třídy v rámci kolekcí. Implementují sběrné rozhraní a rozhraní Seznam. Tento článek popisuje rozdíl mezi ArrayList a LinkedList. ArrayList je třída, která rozšiřuje AbstractList a implementuje rozhraní List, které interně používá dynamické pole k ukládání datových prvků. LinkedList je třída, která rozšiřuje AbstractSequentialList a implementuje rozhraní List, Deque a Queue, která interně používají k ukládání datových prvků dvojitě propojený seznam. To je klíčový rozdíl mezi ArrayList a LinkedList.
Co je ArrayList?
Třída ArrayList se používá k vytváření dynamických polí. Na rozdíl od normálního pole není velikost dynamického pole pevná. Objekt vytvořený pomocí třídy ArrayList může uložit sadu prvků v seznamu. Kapacita se zvyšuje automaticky, takže programátor může přidávat prvky do seznamu. Třída ArrayList rozšiřuje třídu AbstractList, která implementuje rozhraní List. Proto může ArrayList používat metody rozhraní List. Pro přístup k prvkům se používá metoda get(). K přidání prvků do seznamu lze použít metodu add(). Metoda remove() se používá k odstranění prvku ze seznamu. Viz níže uvedený program.
Obrázek 01: Příklad ArrayList
Podle výše uvedeného programu je vytvořen objekt ArrayList. Pomocí metody add lze prvky přidávat dynamicky. Prvky „A“, „B“, „C“, „D“a „E“se přidávají pomocí metody sčítání. Metoda remove se používá k odstranění prvku ze seznamu. Při předání 4 do metody odstranění je písmeno ve 4. indexu, které je „E“, odstraněno ze seznamu. Při iteraci seznamu pomocí cyklu for se vytisknou písmena A, B, C a D.
Co je LinkedList?
Podobně jako ArrayList se LinkedList používá k dynamickému ukládání datových prvků. Objekt vytvořený pomocí třídy LinkedList může uložit sadu prvků v seznamu. Kapacita se zvyšuje automaticky, takže programátor může přidávat prvky do seznamu. Interně používá k ukládání dat dvojitě propojený seznam. Ve dvojitě propojeném seznamu jsou data uložena jako uzly. Každý uzel obsahuje dva odkazy. První odkaz ukazuje na předchozí uzel. Další odkaz ukazuje na další uzel v pořadí.
Třída LinkedList rozšiřuje třídu AbstractSequentialList a implementuje rozhraní List. Proto může LinkedList používat metody rozhraní Seznam. Pro přístup k prvkům seznamu lze použít metodu get(). K přidání prvků do seznamu lze použít metodu add(). Metoda remove() se používá k odstranění prvku ze seznamu. Viz níže uvedený program.
Obrázek 02: Příklad s LinkedList
Podle výše uvedeného programu je vytvořen objekt LinkedList. Pomocí metody add lze prvky přidávat dynamicky. Prvky „A“, „B“, „C“, „D“a „E“se přidávají pomocí metody sčítání. Metoda remove se používá k odstranění prvku ze seznamu. Při předání 4 do metody odstranění se ze seznamu odstraní písmeno ve 4. indexu, které je „E“. Při iteraci pomocí cyklu for se vytisknou písmena A, B, C a D.
Jaké jsou podobnosti mezi ArrayList a LinkedList?
- Rozhraní seznamu implementují ArrayList i LinkedList.
- ArrayList i LinkedList mohou obsahovat duplicitní prvky.
- ArrayList i LinkedList udržují objednávku vložení.
Jaký je rozdíl mezi ArrayList a LinkedList?
ArrayList vs LinkedList |
|
ArrayList je třída, která rozšiřuje AbstractList a implementuje rozhraní List, které interně používá dynamické pole k ukládání datových prvků. | LinkedList je třída, která rozšiřuje AbstractSequentialList a implementuje rozhraní List, Deque, Queue, která interně používá k ukládání datových prvků dvojitě propojený seznam. |
Přístup k prvkům | |
Přístup k prvkům ArrayList je rychlejší než u LinkedList. | Přístup k prvkům LinkedList je pomalejší než k ArrayList. |
Manipulační prvky | |
Manipulace s prvky ArrayList je pomalejší než s LinkedList. | Manipulace s prvky LinkedList je rychlejší než s ArrayList. |
Chování | |
ArrayList funguje jako seznam. | LinkedList funguje jako seznam a fronta. |
Shrnutí – ArrayList vs LinkedList
Sběrný rámec umožňuje práci s datovými strukturami, jako jsou seznamy, stromy, mapy a sady. Seznam je rozhraním rámce kolekce. Tento článek pojednával o rozdílu mezi ArrayList a LinkedList. ArrayList je třída, která rozšiřuje AbstractList a implementuje rozhraní List, které interně používá dynamické pole k ukládání datových prvků. LinkedList je třída, která rozšiřuje AbstractSequentialList a implementuje rozhraní List, Deque, Queue, která interně používá k ukládání datových prvků dvojitě propojený seznam. To je rozdíl mezi ArrayList a LinkedList.