LinkedList vs ArrayList Java: Tiedä tärkeimmät erot



Tämä LinkedList vs ArrayList -artikkeli antaa sinulle oikean vertailun niiden luetteloiden välillä, jotka toteuttavat luettelorajapinnan

Lista Java on alikäyttöliittymä joka tarjoaa optimaalisia ratkaisuja käsitteillä, kuten sijaintipääsy, iterointi ja niin edelleen. Tässä artikkelissa keskustelen suurimmista eroista Java-käyttöliittymän LinkedList ja ArrayList välillä.

Tässä ovat tämän artikkelin aiheet:





Aloitetaanpa!

ero html: n ja xml: n välillä

Mikä on LinkedList?

Jälkeen taulukot , toiseksi suosituin tietorakenne on ehdottomasti a . Linkitetty luettelo on lineaarinen tietorakenne, jonka muodostavat asolmujen ketju, jossa kukin solmu sisältää arvon ja aosoitinketjun seuraavaan solmuun.Myös tlinkitetyn luettelon viimeinen linkki osoittaa nollaan, mikä osoittaa ketjun lopun.Linkitetyn luettelon elementtiä kutsutaan a solmu .Luettelon ensimmäistä solmua kutsutaan pää .Viimeistä solmua kutsutaan häntä .



Annan sinulle yksinkertaisen esimerkin tästä: Kuvittele ketjun paperiliittimiä, jotka on liitetty toisiinsa. Voit helposti lisätä toisen paperiliittimen ylä- tai alaosaan. Yksi on myös helppo asettaa keskelle. Sinun tarvitsee vain rikkoa ketju keskellä, lisätä uusi paperiliitin ja liittää toinen puolikas takaisin. Linkitetty luettelo on samanlainen kuin tämä.

Esimerkki:

paketti MyPackage import java.util.LinkedList import java.util.ListIterator public class linkslist {public static void main (String args []) {/ * Linked List Declaration * / LinkedListl_list = new LinkedList () / * add (String Item) on käytetään * kohteiden lisäämiseen linkitettyyn luetteloon * / l_list.add ('Java') l_list.add ('Python') l_list.add ('Scala') l_list.add ('Swift') System.out.println ( 'Linkitetyn luettelon sisältö:' + l_list) / * Lisää kohteita määritettyyn kohtaan * / l_list.add (2, 'JavaScript') l_list.add (3, 'Kotlin') System.out.println ('l_list Sisältö muokkauksen jälkeen: '+ l_list) / * Lisää ensimmäinen ja viimeinen kohde * / l_list.addFirst (' Ensimmäinen kurssi ') l_list.addLast (' Viimeinen kurssi ') System.out.println (' l_list Sisältö lisäyksen jälkeen: '+ l_list) / * Hae ja aseta luettelossa olevat kohteet * / Object firstvar = l_list.get (0) System.out.println ('Ensimmäinen kohde:' + firstvar) l_list.set (0, 'Java9') System.out.println ('l_list Sisältö ensimmäisen kohteen päivittämisen jälkeen: '+ l_list) / * Poista sijainnista * / l_list.remove (1) l_list.remove (2) System.out.println ('LinkedList, kun kohde on poistettu 2. ja 3. sijasta' + l_list) / * Poista ensimmäinen ja viimeinen kohde * / l_list.removeFirst () l_list.removeLast () System.out.println ('Lopullinen sisältö ensimmäisen ja viimeisen kohteen poistamisen jälkeen : '+ l_list) / * Linkitetyn luettelon toistaminen * / ListIteratoritrator = l_list.listIterator () System.out.println (' Luettelo näytetään iteraattorin avulla: ') taas (itrator.hasNext ()) {System.out.println (itrator .Seuraava()) } } }

Tuotos:



Linkitetyn luettelon sisältö = {Java, Python, Scala, Swift} Sisältö muokkauksen jälkeen = {Java, Python, JavaScript, Kotlin, Scala, Swift} Sisältö lisäyksen jälkeen = {Ensimmäinen kurssi, Java, Python, JavaScript, Kotlin, Scala, Swift, Viimeinen kurssi} Ensimmäinen kohde = {Ensimmäinen kurssi} Sisältö ensimmäisen kohteen päivityksen jälkeen = {Java9, Java, Python, JavaScript, Kotlin, Scala, Swift, Viimeinen kurssi} Sisältö kohteen poistamisen jälkeen 2. ja 3. sijasta = {Java9, Python, Kotlin, Scala, Swift, Viimeinen kurssi} Lopullinen sisältö ensimmäisen ja viimeisen kohteen poistamisen jälkeen = {Python, Kotlin, Scala, Swift} Luettelo näytetään iteraattorilla = Python Kotlin Scala Swift

Siirrytään nyt seuraavaan aiheeseen.

Mikä on ArrayList?

on List Interface -toteutus, jossa elementit voidaan lisätä tai poistaa dynaamisesti vastaavasta luettelosta. Tässä luettelon kokoa lisätään dynaamisesti, jos elementtejä lisätään enemmän kuin alkuperäinen tai todellinen koko. Vaikka se voi olla hitaampi kuin tavalliset taulukot, se voi olla hyödyllinen ohjelmissa, joissa matriisissa vaaditaan paljon manipulointia.

LinkedList-vs-ArrayList-in-Java-Edureka

ArrayList käytetään näihin tarkoituksiin:

  • ArrayList Java on tottunut kaupassa dynaamisen kokoinen kokoelma elementtejä.
  • Se alustetaan koon mukaan. Koko voi kuitenkin kasvaa, jos kokoelma kasvaa ja kutistuu, jos esineitä poistetaan .
  • Myös ArrayList antaa sinun käyttää satunnaisesti luetteloa.

Siirrytään eteenpäin ja osoitetaan LinkedListin ja ArrayListin väliset yhtäläisyydet Javassa.

LinkedListin ja ArrayListin yhtäläisyydet

Nämä ovat huomattavia yhtäläisyyksiä LinkedListin ja ArrayListin välillä Javassa.

  • ArrayList ja LinkedList ovat Luettelon käyttöliittymä .
  • Sekä ArrayList että LinkedList ylläpitävät elementtien lisäysjärjestystä. Tämä tarkoittaa, että vaikka luetteloelementtejä näytetään, tulosjoukon järjestys olisi sama kuin missä elementit lisättiin luetteloon.
  • Nämä luokitukset ArrayList ja LinkedList eivät ole synkronoituja, ja ne voidaan synkronoida nimenomaisesti käyttämällä CollectionsSynchronizedList menetelmä.
  • Näiden luokkien palauttamat iteraattori ja ListIterator ovat epäonnistuneita. Tämä tarkoittaa, että jos luetteloa muokataan rakenteellisesti milloin tahansa iteraattorin luomisen jälkeen, paitsiiteraattorin omat poisto- tai lisäysmenetelmät, iteraattori heittää a ConcurrentModificationException .

LinkedList ja ArrayList erot

Tarkastellaan ensin parametreja, joilla vertaillaan LinkedListiä ja ArrayListiä Java-sovelluksessa.

Parametrit LinkedListin ja ArrayListin vertaamiseksi Java:

  • Operaatio
  • Toteutus
  • Prosessi
  • Muisti
  1. Toiminnot

Kohteen lisääminen, lisääminen ja poistaminen on nopeampaa kohdassa a LinkedList koska meidän ei tarvitse muuttaa kokoa samalla tavalla ArrayList.

2. Toteutus

ArrayList perustuu käsite dynaamisesti muutettavissa olevasta taulukosta, kun taas LinkedList perustuu kaksinkertaisesti linkitettyjen luetteloiden toteuttamiseen

3. Prosessi

TO LinkedList luokkaa voidaan käyttää luettelona ja jonona, koska se toteuttaa List- ja Deque-rajapinnat, kun taas ArrayList voi toteuttaa vain luetteloita.

Neljä. Muisti

TO LinkedList kuluttaa enemmän muistia kuin ArrayList koska jokainen solmu a LinkedList tallentaa kaksi viitteitä, kun taas ArrayList omistaa vain tiedot ja sen indeksin

LinkedList vs ArrayList Java-sovelluksessa

ParametritLinkedListArrayList
Toiminnot

Asennus-, lisäys- ja poistotoimet ovat melko nopeita

Vertailun vuoksi toiminnotovat hitaita täällä

Toteutus

Seuraa kahdesti linkitetyn luettelon toteutusta

Seuraa dynaamisesti muutettavan taulukon käsitettä

Prosessi

LinkedList-luokka voi olla luettelo ja jono, koska se toteuttaa List- ja Deque-rajapinnat

luo ec2-ilmentymä tilannekuvasta

ArrayList-luokka voi olla luettelo, koska se toteuttaa vain luetteloita

Muisti

LinkedList-muistin kulutus on suuri

Vähemmän verrattuna LinkedListiin

Siinä kaikki ihmiset! Tämä vie meidät tämän artikkelin loppuun LinkedList vs ArrayList Java-ohjelmassa. Toivon, että olette selvillä siitä, mitä tässä artikkelissa opetetaan.

Jos löysit tämän artikkelin aiheesta 'LinkedList vs ArrayList in Java', tutustu Edureka, luotettava verkko-oppimisyritys, jolla on yli 250 000 tyytyväisen oppijan verkosto, joka levisi ympäri maailmaa. Autamme sinua matkasi jokaisessa vaiheessa ja keksimme opetussuunnitelman, joka on tarkoitettu opiskelijoille ja ammattilaisille, jotka haluavat olla Java-kehittäjiä.