Rozdíl mezi ArrayListem a LinkedListem v Javě

Autor: Laura McKinney
Datum Vytvoření: 3 Duben 2021
Datum Aktualizace: 10 Smět 2024
Anonim
Rozdíl mezi ArrayListem a LinkedListem v Javě - Technologie
Rozdíl mezi ArrayListem a LinkedListem v Javě - Technologie

Obsah


ArrayList a LinkedList jsou Sbírka třídy a obě implementují Seznam rozhraní. Třída ArrayList vytvoří seznam, který je interně uložen v a dynamický pole který se zvětší nebo zmenší, jakmile jsou prvky přidány nebo odstraněny. LinkedList také vytvoří seznam, který je interně uložen v a Dvojnásobně Propojeno Seznam. Obě třídy se používají k ukládání prvků do seznamu, ale hlavní rozdíl mezi oběma třídami ArrayList a LinkedList je ten, že ArrayList umožňuje náhodný přístup k prvkům v seznamu, jak funguje na založeno na indexu datová struktura. Na druhé straně, Spojový seznam neumožňuje náhodný přístup, protože nemá indexy pro přímý přístup k prvkům, musí procházet seznamem, aby získal nebo získal prvek ze seznamu.


Podívejme se na další rozdíly mezi ArrayListem a LinkedListem pomocí níže uvedené srovnávací tabulky.

  1. Srovnávací tabulka
  2. Definice
  3. Klíčové rozdíly
  4. Závěr

Srovnávací tabulka

Základ pro srovnáníArrayListSpojový seznam
Základní ArrayList umožňuje náhodný přístup k prvkům v seznamu.LinkedList neumožňuje náhodný přístup k prvkům v seznamu.
Datová strukturaVnitřní struktura použitá pro ukládání prvků je dynamické pole.Vnitřní struktura používaná k ukládání prvků je dvojnásobným seznamem odkazů.
RozšiřujeArrayList rozšiřuje třídu AbstarctList.LinkedList rozšiřuje AbstractSequentialList.
ImplementaceAbstractList implementuje rozhraní seznamu.LinkedList implementuje List, Deque, Queue.
Přístup Přístup k prvkům v seznamu je v ArrayListu rychlejší.Přístup k prvkům v seznamu je v propojeném seznamu pomalejší.
ManipulaceManipulace s prvky seznamu je v ArrayListu pomalejší.Manipulace s prvky v seznamu je v propojeném seznamu rychlejší.
ChováníArraylList se chová jako seznam při implementaci seznamu.LinkedList se chová jako List a Queue, protože implementuje List i Queue.


Definice ArrayList

AbstractList třída je definována Rámec sběru. Rozšiřuje se AbstarctList a implementuje Seznam rozhraní. ArrayList používá dynamické pole tj. pole s proměnnou délkou jako vnitřní datová struktura pro uložení prvků v seznamu. Potřeba ArrayListu vyvstává, protože pole v javě má ​​pevnou délku. Nemůže tedy růst ani zmenšovat velikost, protože prvky jsou přidávány nebo odstraňovány z pole. Takže musíte znát velikost požadovaného pole předem. Seznam polí implementovaných pomocí třídy ArrayList se však může zvětšit a zmenšit, jakmile jsou prvky přidány nebo odstraněny z pole.

Seznam polí implementovaných pomocí ArrayList je přístupný náhodně jako ArrayList pracuje na základě indexu. Takže s vědomím indexu můžete přímo přistupovat k prvkům seznamu. Existují tři konstruktéři ArrayList:

ArrayList () ArrayList (Collection <? Rozšiřuje E> c) ArrayList (int kapacita)

První konstruktor implementuje prázdný seznam polí. druhý konstruktor implementuje seznam polí inicializovaný pomocí Sbírka c elementy. Třetí konstruktor implementuje seznam polí pomocí kapacita uvedené v argumentu. Při práci s ArrayList budete někdy potřebovat převést ArrayList Collection do pole. To lze provést voláním toArray ().

Definice LinkedList

Jako ArrayList, Spojový seznam je také Sbírka použití třídy dvojitě propojený seznam jako interní datová struktura pro uložení prvků v seznamu. Třída LinkedList se rozšiřuje AbstractSequentialList a implementuje Seznam, Deque a Fronta rozhraní. Na propojený seznam implementovaný pomocí LinkedList nelze přistupovat náhodně. Pokud si přejete načíst jakýkoli prvek ze seznamu, musíte iterovat seznam, abyste tento prvek prohledali.

Ve třídě LinkedList jsou dva konstruktory.

LinkedList () LinkedList (Collection <? Rozšiřuje E> c)

První konstruktor vytvoří prázdný propojený seznam. druhý konstruktor vytvoří propojený seznam, inicializovaný pomocí prvků Sbírka C.

V LinkedList je manipulace se seznamem snadná a rychlá. Důvodem je, že pokud přidáte nebo odstraníte jakýkoli prvek v seznamu, není třeba tyto prvky posouvat jako v ArrayListu. Přístup je však pomalejší, protože nemá index pro přímý přístup k prvkům.

  1. Seznam implementovaný pomocí ArrayList lze získat náhodně, protože ArrayList přijímá datovou strukturu pole založenou na indexech. Na druhou stranu, seznam implementovaný propojeným seznamem nelze přistupovat náhodně, protože pro načtení nebo přístup k určitému prvku v seznamu musíte seznam procházet.
  2. Vnitřní datová struktura použitá ArrayListem k uložení prvků seznamu je dynamické pole které se mohou přidávat nebo mazat ze seznamu. Vnitřní datová struktura použitá propojeným seznamem k uložení prvků v seznamu je dvojitě propojený seznam.
  3. ArrayList rozšiřuje AbstractList třída, která je také třídou Collection, zatímco třída LinkedList se rozšiřuje AbstractSequentialList třída, která je opět třídou kolekce.
  4. Implementace třídy ArrayList Seznam rozhraní, zatímco třída LinkedList implementuje Seznam, Fronta, a Deque rozhraní.
  5. Přístup k prvkům ze seznamu implementovaného pomocí ArrayList je rychlejší protože má indexovou datovou strukturu. Na druhé straně neexistuje v seznamu implementována byLinkledList žádná struktura založená na indexech. Proto je přes seznam aplikován iterátor pro dosažení prvku, který má být zpřístupněn, což umožňuje přístup pomalejší v LinkedList.
  6. Manipulace je Manipulace v seznamu implementovaném pomocí ArrayList, protože kdykoli je prvek přidán nebo odstraněn ze seznamu, prvky v seznamu jsou posunuty, aby vyhovovaly změně. Na druhé straně je manipulace v seznamu implementovaném LinkedListem rychlejší, protože nevyžaduje přidání prvků v seznamu po přidání nebo odstranění prvků ze seznamu.
  7. ArrayList funguje jako seznam protože implementuje rozhraní seznamu, zatímco propojený seznam funguje jako seznam a fronta protože implementuje seznam i frontu.

Závěr:

Pokud dochází k častému přidávání nebo mazání prvků v seznamu, musí být použit LinkList, protože během manipulace funguje lépe. Pokud je v seznamu aplikováno časté vyhledávání, je ArrayList nejlepší volbou, protože má lepší přístup při přístupu k prvkům ze seznamu.