LinkedList vs ArrayList v Jave: Poznajte hlavné rozdiely



Tento článok o LinkedList vs ArrayList vám poskytne správne porovnanie medzi zoznamami, ktoré implementujú rozhranie zoznamu

Zoznam v Jave je čiastkové rozhranie ktoré poskytujú optimálne riešenia s konceptmi ako pozičný prístup, iterácia atď. V tomto článku sa budem venovať hlavným rozdielom medzi rozhraním zoznamu LinkedList a ArrayList v Jave.

Ďalej sú uvedené témy, ktorým sa tento článok venuje:





Poďme začať!

Čo je LinkedList?

Po polia , druhou najpopulárnejšou dátovou štruktúrou je určite a . Prepojený zoznam je lineárna dátová štruktúra, ktorú tvorí areťazec uzlov, v ktorých každý uzol obsahuje hodnotu aukazovateľdo nasledujúceho uzla v reťazci.Tiež tposledný odkaz v prepojenom zozname ukazuje na nulu, čo znamená koniec reťazca.Prvok v prepojenom zozname sa nazýva a uzol .Prvý uzol v zozname sa nazýva hlava .Posledný uzol sa nazýva chvost .



Uvediem jednoduchý príklad: Predstavte si reťaz kancelárskych sponiek, ktoré sú navzájom spojené. Môžete ľahko pridať ďalšiu sponku na papier zhora alebo zdola. Je tiež ľahké vložiť jeden do stredu. Musíte len prerušiť reťaz v strede, pridať novú kancelársku sponku a potom znova pripojiť druhú polovicu. Prepojený zoznam je podobný tomuto.

Príklad:

balíček MyPackage import java.util.LinkedList import java.util.ListIterator verejná trieda linkedlist {public static void main (String args []) {/ * Deklarácia prepojeného zoznamu * / LinkedListl_list = nový LinkedList () / * add (položka reťazca) je používa sa na pridanie * položiek do prepojeného zoznamu * / l_list.add ('Java') l_list.add ('Python') l_list.add ('Scala') l_list.add ('Swift') System.out.println ( „Prepojený obsah zoznamu: '+ l_list) / * Pridať položky na určené miesto * / l_list.add (2,' JavaScript ') l_list.add (3,' Kotlin ') System.out.println (' l_list obsah po úprave: '+ l_list) / * Pridať prvú a poslednú položku * / l_list.addFirst (' Prvý kurz ') l_list.addLast (' Posledný kurz ') System.out.println (' l_list Obsah po pridaní: '+ l_list) / * Získať a nastavte položky v zozname * / Object firstvar = l_list.get (0) System.out.println ('Prvá položka:' + firstvar) l_list.set (0, 'Java9') System.out.println ('l_list Obsah po aktualizácii prvej položky: '+ l_list) / * Odstrániť z pozície * / l_list.remove (1) l_list.remove (2) System.out.println ('LinkedList po odstránení položky na 2. a 3. pozícii' + l_list) / * Odstrániť prvú a poslednú položku * / l_list.removeFirst () l_list.removeLast () System.out.println ('Konečný obsah po odstránení prvej a poslednej položky : '+ l_list) / * Iterácia prepojeného zoznamu * / ListIteratoritrator = l_list.listIterator () System.out.println (' Zoznam zobrazený pomocou iterátora: ') while (itrator.hasNext ()) {System.out.println (itrator) .Ďalšie()) } } }

Výkon:



Obsah prepojeného zoznamu = {Java, Python, Scala, Swift} Obsah po úprave = {Java, Python, JavaScript, Kotlin, Scala, Swift} Obsah po pridaní = {Prvý kurz, Java, Python, JavaScript, Kotlin, Scala, Swift, Posledný kurz} Prvá položka = {Prvý kurz} Obsah po aktualizácii prvej položky = {Java9, Java, Python, JavaScript, Kotlin, Scala, Swift, Posledný kurz} Obsah po odstránení položky na 2. a 3. pozícii = {Java9, Python, Kotlin, Scala, Swift, Posledný kurz} Konečný obsah po odstránení prvej a poslednej položky = {Python, Kotlin, Scala, Swift} Zoznam zobrazený pomocou iterátora = Python Kotlin Scala Swift

Poďme teraz k ďalšej téme.

rozdiel medzi preťažením a prepísaním metódy

Čo je to ArrayList?

je implementácia rozhrania zoznamu, kde je možné prvky dynamicky pridávať alebo odstraňovať z príslušného zoznamu. Tu sa veľkosť zoznamu dynamicky zväčšuje, ak sú prvky pridané viac, ako je pôvodná alebo skutočná veľkosť. Aj keď to môže byť pomalšie ako štandardné polia, môže to byť užitočné v programoch, kde sa vyžaduje veľa manipulácie v poli.

LinkedList-vs-ArrayList-in-Java-Edureka

ArrayList sa používa na tieto účely:

  • ArrayList v Jave je zvyknutý obchod kolekcia prvkov dynamickej veľkosti.
  • Inicializuje sa veľkosťou. Avšak veľkosť sa môže zväčšiť, ak sa kolekcia zväčšuje a zmenšuje, ak sú z nej odstránené objekty .
  • ArrayList vám tiež umožňuje náhodný prístup do zoznamu.

Poďme ďalej a poukázajme na podobnosti medzi LinkedList a ArrayList v Jave.

Podobnosti medzi LinkedList a ArrayList

Toto sú pozoruhodné podobnosti medzi LinkedList a ArrayList v Jave.

  • ArrayList a LinkedList sú implementáciami Zoznamové rozhranie .
  • ArrayList aj LinkedList zachovávajú poradie vkladania prvkov. To znamená, že pri zobrazovaní prvkov zoznamu bude mať sada výsledkov rovnaké poradie, v akom boli prvky vložené do zoznamu.
  • Triedy ArrayList a LinkedList nie sú synchronizované a je možné ich synchronizovať explicitne pomocou CollectionsSynchronizedList metóda.
  • Iterátor a ListIterator vrátené týmito triedami sú rýchle. To znamená, že ak je zoznam štrukturálne zmenený kedykoľvek po vytvorení iterátora, s výnimkouAk iterátor použije vlastné metódy odstránenia alebo pridania, vrhne a ConcurrentModificationException .

Rozdiely medzi LinkedList a ArrayList

Najskôr sa pozrime na parametre na porovnanie LinkedList vs ArrayList v Jave.

Parametre na porovnanie LinkedList a ArrayList v Jave:

  • Prevádzka
  • Implementácia
  • Proces
  • Pamäť
  1. Operácie

Operácie vloženia, pridania a vybratia položky sú rýchlejšie v a LinkedList pretože nepotrebujeme meniť veľkosť ako v ArrayList.

2. Implementácia

ArrayList je založený na koncept dynamicky zmeniteľného poľa, zatiaľ čo LinkedList je založený na implementácii dvojnásobne prepojeného zoznamu

3. Proces

TO LinkedList trieda môže byť použitá ako zoznam a poradie, pretože implementuje rozhrania List a Deque, zatiaľ čo ArrayList môže implementovať iba Zoznamy.

Štyri. Pamäť

TO LinkedList spotrebúva viac pamäte ako ArrayList pretože každý uzol v a LinkedList uchováva dve referencie, zatiaľ čo ArrayList uchováva iba údaje a ich index

LinkedList vs ArrayList v Jave

ParametreLinkedListArrayList
Operácie

Operácie vloženia, pridania a odstránenia sú pomerne rýchlejšie

Porovnateľne s operáciamisú tu pomalé

Implementácia

Nasleduje implementácia dvojnásobne prepojeného zoznamu

Sleduje koncepciu dynamicky meniť veľkosť poľa

Proces

Triedou LinkedList môže byť zoznam a poradie, pretože implementuje rozhrania List a Deque

triediť čísla c ++

Trieda ArrayList môže byť zoznamom, pretože implementuje iba Zoznamy

Pamäť

Spotreba pamäte v zozname LinkedList je vysoká

Menej v porovnaní s LinkedList

To je všetko priatelia! Týmto sa dostávame na koniec tohto článku o LinkedList vs ArrayList v Jave. Dúfam, že máte jasno v tom, čo sa v tomto článku učí.

Ak ste tento článok našli na webe „LinkedList vs ArrayList v Jave“, pozrite si autor: Edureka, dôveryhodná online vzdelávacia spoločnosť so sieťou viac ako 250 000 spokojných študentov rozmiestnených po celom svete. Sme tu, aby sme vám pomohli s každým krokom na vašej ceste, a prichádzame s učebným plánom, ktorý je určený pre študentov a profesionálov, ktorí chcú byť vývojármi Java.