Klíčový rozdíl - ArrayList vs LinkedList
Kolekce 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 podle potřeby růst. Programovací jazyky, jako je Java, mají sbírky. Jedná se o rámec se sadou tříd a rozhraní. Slouží jako kontejner pro skupinu prvků. Kolekce umožňují ukládat, aktualizovat a načítat sadu prvků. Pomáhá pracovat s datovými strukturami, jako jsou seznamy, sady, stromy a mapy. Seznam je rozhraním rámce Collection. ArrayList a LinkedList jsou dvě třídy v rámci kolekce. Implementují rozhraní kolekce a rozhraní seznamu. Tento článek pojednává o rozdílech 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í dvojitě propojený seznam k ukládání datových prvků. To je klíčový rozdíl mezi ArrayList a LinkedList.
OBSAH
1. Přehled a klíčový rozdíl
2. Co je ArrayList
3. Co je LinkedList
4. Podobnosti mezi ArrayList a LinkedList
5. Porovnání vedle sebe - ArrayList vs LinkedList ve formě tabulky
6. Shrnutí
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 ukládat sadu prvků do seznamu. Kapacita se zvyšuje automaticky, takže programátor může do seznamu přidávat prvky. Třída ArrayList rozšiřuje třídu AbstractList, která implementuje rozhraní List. Proto metody ArrayList může použít ArrayList. 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 odebrá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 přidání lze prvky přidávat dynamicky. Prvky „A“, „B“, „C“, „D“a „E“se přidávají pomocí metody přidání. Metoda remove se používá k odebrání prvku ze seznamu. Při předávání 4 metodě remove je písmeno ze 4. indexu, které je „E“, odstraněno ze seznamu. Při iteraci seznamu pomocí smyčky 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á povoleno ukládat sadu prvků do seznamu. Kapacita se zvyšuje automaticky, takže programátor může do seznamu přidávat prvky. Interně používá k ukládání dat dvojnásobně propojený seznam. V dvojnásobně 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. Metody rozhraní List lze proto použít LinkedList. Metodu get () lze použít k přístupu k prvkům seznamu. K přidání prvků do seznamu lze použít metodu add (). Metoda remove () se používá k odebrá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 přidání lze prvky přidávat dynamicky. Prvky „A“, „B“, „C“, „D“a „E“se přidávají pomocí metody přidání. Metoda remove se používá k odebrání prvku ze seznamu. Při předávání 4 metodě remove bude písmeno ve 4. indexu, které je „E“, odstraněno ze seznamu. Při iteraci pomocí smyčky for se vytisknou písmena A, B, C a D.
Jaké jsou podobnosti mezi ArrayList a LinkedList?
- ArrayList i LinkedList implementují rozhraní seznamu.
- ArrayList i LinkedList mohou obsahovat duplicitní prvky.
- ArrayList i LinkedList udržují pořadí vložení.
Jaký je rozdíl mezi ArrayList a LinkedList?
Rozdílný článek uprostřed před tabulkou
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á dvojnásobně propojený seznam k ukládání datových prvků. |
Přístup k prvkům | |
Přístup k prvkům ArrayList je rychlejší než k LinkedList. | Přístup k prvkům LinkedList je pomalejší než k ArrayList. |
Manipulace s prvky | |
Manipulace s prvky ArrayList je pomalejší než u 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
Rámec kolekce 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ílech 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á dvojnásobně propojený seznam k ukládání datových prvků. To je rozdíl mezi ArrayList a LinkedList.