LinkedList vs ArrayList v Javě: Poznejte hlavní rozdíly



Tento článek LinkedList vs ArrayList vám poskytne správné srovnání mezi seznamy, které implementují rozhraní seznamu

Seznam v Javě je dílčí rozhraní která poskytuje optimální řešení s pojmy jako poziční přístup, iterace atd. V tomto článku se budu zabývat hlavními rozdíly mezi rozhraním seznamu LinkedList vs ArrayList v Javě.

Níže jsou uvedena témata v tomto článku:





Pojďme začít!

Co je LinkedList?

Po pole , druhou nejpopulárnější datovou strukturou je určitě . Propojený seznam je lineární datová struktura, kterou tvoří ařetěz uzlů, ve kterém každý uzel obsahuje hodnotu aukazateldo dalšího uzlu v řetězci.Také tposlední odkaz v propojeném seznamu ukazuje na null, což značí konec řetězce.Prvek v propojeném seznamu se nazývá a uzel .První uzel v seznamu se nazývá hlava .Poslední uzel se nazývá ocas .



Dovolte mi uvést jednoduchý příklad tohoto: Představte si řetěz kancelářských sponek, které jsou vzájemně propojeny. Nahoře nebo dole můžete snadno přidat další kancelářskou sponku. Je také snadné vložit jednu do středu. Jediné, co musíte udělat, je rozbít řetěz uprostřed, přidat novou kancelářskou sponku a znovu připojit druhou polovinu. Propojený seznam je podobný tomuto.

Příklad:

balíček MyPackage import java.util.LinkedList import java.util.ListIterator veřejná třída linkedlist {public static void main (String args []) {/ * Deklarace propojeného seznamu * / LinkedListl_list = new LinkedList () / * add (String Item) je používá se pro přidání * položek do propojeného seznamu * / l_list.add ('Java') l_list.add ('Python') l_list.add ('Scala') l_list.add ('Swift') System.out.println ( 'Obsah propojeného seznamu:' + l_list) / * Přidat položky na určené místo * / l_list.add (2, 'JavaScript') l_list.add (3, 'Kotlin') System.out.println ('l_list Obsah po úpravách: '+ l_list) / * Přidat první a poslední položku * / l_list.addFirst (' První kurz ') l_list.addLast (' Poslední kurz ') System.out.println (' l_list Obsah po přidání: '+ l_list) / * Získat a nastavte položky v seznamu * / Object firstvar = l_list.get (0) System.out.println ('První položka:' + firstvar) l_list.set (0, 'Java9') System.out.println ('l_list Obsah po aktualizaci první položky: '+ l_list) / * Odebrat z pozice * / l_list.remove (1) l_list.remove (2) System.out.println ('LinkedList after deletion of Item in 2nd and 3rd position' + l_list) / * Remove first and last Item * / l_list.removeFirst () l_list.removeLast () System.out.println ('Finální obsah po odebrání první a poslední položky : '+ l_list) / * Iterace propojeného seznamu * / ListIteratoritrator = l_list.listIterator () System.out.println (' Seznam zobrazený pomocí iterátoru: ') while (itrator.hasNext ()) {System.out.println (itrator .další()) } } }

Výstup:



Obsah propojeného seznamu = {Java, Python, Scala, Swift} Obsah po úpravách = {Java, Python, JavaScript, Kotlin, Scala, Swift} Obsah po přidání = {První kurz, Java, Python, JavaScript, Kotlin, Scala, Swift, Poslední kurz} První položka = {První kurz} Obsah po aktualizaci první položky = {Java9, Java, Python, JavaScript, Kotlin, Scala, Swift, Poslední kurz} Obsah po odstranění položky na 2. a 3. pozici = {Java9, Python, Kotlin, Scala, Swift, Poslední kurz} Konečný obsah po odebrání první a poslední položky = {Python, Kotlin, Scala, Swift} Seznam zobrazený pomocí iterátoru = Python Kotlin Scala Swift

Nyní pojďme k dalšímu tématu.

c ++ seznam řazení

Co je to ArrayList?

je implementace rozhraní seznamu, kde lze prvky dynamicky přidávat nebo odebírat z příslušného seznamu. Zde se velikost seznamu dynamicky zvyšuje, pokud jsou prvky přidány více než počáteční nebo skutečná velikost. I když to může být pomalejší než standardní pole, může to být užitečné v programech, kde je vyžadována spousta manipulace v poli.

LinkedList-vs-ArrayList-in-Java-Edureka

ArrayList se používá pro tyto účely:

  • ArrayList v Javě je zvyklý obchod kolekce prvků dynamické velikosti.
  • Inicializuje se podle velikosti. Velikost se však může zvětšit, pokud se kolekce zvětší a zmenší, pokud jsou objekty odebrány z .
  • ArrayList také umožňuje náhodný přístup do seznamu.

Pojďme pokročit a poukázat na podobnosti mezi LinkedList a ArrayList v Javě.

Podobnosti mezi LinkedList a ArrayList

Jedná se o pozoruhodné podobnosti mezi LinkedList a ArrayList v Javě.

  • ArrayList a LinkedList jsou implementace Seznam rozhraní .
  • ArrayList i LinkedList udržují pořadí vkládání prvků. To znamená, že při zobrazování prvků seznamu bude mít sada výsledků stejné pořadí, v jakém byly prvky vloženy do seznamu.
  • Tyto třídy ArrayList a LinkedList jsou nesynchronizované a lze je synchronizovat explicitně pomocí CollectionsSynchronizedList metoda.
  • Iterátor a ListIterator vrácené těmito třídami jsou rychlé. To znamená, že pokud je seznam strukturně upraven kdykoli po vytvoření iterátoru, kroměiterátor vlastní metody odebrání nebo přidání, iterátor hodí a ConcurrentModificationException .

Rozdíly mezi LinkedList a ArrayList

Nejprve se podívejme na parametry pro porovnání LinkedList vs ArrayList v Javě.

Parametry pro porovnání LinkedList a ArrayList v Javě:

  • Úkon
  • Implementace
  • Proces
  • Paměť
  1. Operace

Operace vložení, přidání a odebrání položky jsou rychlejší v a Spojový seznam protože nemusíme měnit velikost jako v ArrayList.

2. Implementace

ArrayList je založen na koncept dynamicky měnitelného pole, zatímco Spojový seznam je založen na implementaci dvojnásobně propojeného seznamu

3. Proces

NA Spojový seznam třídu lze použít jako seznam a frontu, protože implementuje rozhraní List a Deque, zatímco ArrayList může implementovat pouze Seznamy.

Čtyři. Paměť

NA Spojový seznam spotřebovává více paměti než ArrayList protože každý uzel v a Spojový seznam ukládá dvě reference, zatímco ArrayList uchovává pouze data a jejich index

LinkedList vs ArrayList v Javě

ParametrySpojový seznamArrayList
Operace

Operace vložení, přidání a odebrání jsou poměrně rychlejší

Srovnatelně operacejsou zde pomalé

Implementace

Následuje implementace dvojnásobně propojeného seznamu

Sleduje koncept dynamicky měnitelného pole

Proces

Třída LinkedList může být seznam a fronta, protože implementuje rozhraní List a Deque

je magisterský postgraduální titul

Třída ArrayList může být seznam, protože implementuje pouze Seznamy

Paměť

Spotřeba paměti v LinkedList je vysoká

Méně ve srovnání s LinkedList

To jsou všichni lidé! Tím se dostáváme na konec tohoto článku o LinkedList vs ArrayList v Javě. Doufám, že máte jasno v tom, co se v tomto článku učí.

Pokud jste našli tento článek na „LinkedList vs ArrayList v Javě“, podívejte se na Edureka, důvěryhodná online vzdělávací společnost se sítí více než 250 000 spokojených studentů po celém světě. Jsme tu, abychom vám pomohli s každým krokem na vaší cestě, a vymyslíme učební plán určený pro studenty a profesionály, kteří chtějí být vývojářem Java.