Diferència entre ArrayList i LinkedList a Java

Autora: Laura McKinney
Data De La Creació: 3 Abril 2021
Data D’Actualització: 15 Ser Possible 2024
Anonim
Diferència entre ArrayList i LinkedList a Java - Tecnologia
Diferència entre ArrayList i LinkedList a Java - Tecnologia

Content


ArrayList i LinkedList són Col · lecció i totes dues implementen el programa Llista interfície. La classe ArrayList crea la llista que s’emmagatzema internament en un dinàmic matriu que augmenta o disminueix de mida a mesura que s'afegeixen o se suprimeixen els elements. LinkedList també crea la llista que s’emmagatzema internament en un Sens dubte Enllaçat Llista. Totes dues classes s’utilitzen per emmagatzemar els elements de la llista, però la diferència principal entre les dues classes ArrayList i LinkedList és que Llista ArrayL permet l’accés aleatori als elements de la llista ja que opera en un basat en índex estructura de dades. D’altra banda, el Llista d'enllaç no permet l’accés aleatori ja que no té índexs per accedir directament a elements, ha de recórrer la llista per recuperar o accedir a un element de la llista.


Analitzem algunes diferències més entre ArrayList i LinkedList amb l'ajuda del gràfic de comparació que es mostra a continuació.

  1. Gràfic de comparació
  2. Definició
  3. Diferències claus
  4. Conclusió

Gràfic de comparació

Bases per a la comparacióLlista ArrayLLlista d'enllaç
Bàsic ArrayList permet l’accés aleatori als elements de la llista.LinkedList no permet l’accés aleatori als elements de la llista.
Estructura de dadesL’estructura interna utilitzada per emmagatzemar elements és la matriu dinàmica.L’estructura interna que s’utilitza per emmagatzemar elements és la llista d’enllaços doblement.
ExtensionsArrayList amplia la classe AbstarctList.LinkedList estén AbstractSequentialList.
ImplementacionsAbstractList implementa la interfície de llista.LinkedList implementa Llista, Deque, cua.
Accés L’accés als elements de la llista és més ràpid a ArrayList.L’accés als elements de la llista és més lent a LinkedList.
ManipulacióLa manipulació dels elements de la llista és més lenta a ArrayList.La manipulació dels elements de la llista és més ràpida a LinkedList.
ComportamentArraylList es comporta com a llista en tant que implementa llista.LinkedList es comporta com a llista i a la cua, ja que implementa ambdues i la llista.


Definició de ArrayList

El Resum Llista la classe està definida per la Marc de la col·lecció. S’estén AbstarctList i implements Llista interfície. Usos ArrayList matriu dinàmic és a dir, la matriu de longitud variable com a estructura interna de dades per emmagatzemar els elements de la llista. La necessitat d’ArrayList sorgeix a mesura que la matriu a java té una longitud fixa. Per tant, no pot créixer ni reduir-se de mida ja que els elements s’afegeixen o s’eliminen de la matriu. Per tant, heu de conèixer prèviament la mida de la matriu requerida. Però la llista de matrius implementada mitjançant la classe ArrayList pot créixer i reduir-se de mida a mesura que els elements s’afegeixen o s’eliminen de la matriu.

Es pot accedir a la llista de matrius implementada mitjançant ArrayList aleatòriament com ArrayList opera a la base de l'índex. Així que coneixent l’índex podeu accedir directament a l’elemnt de la llista. Hi ha tres constructors d'ArrayList:

ArrayList () ArrayList (Col·lecció <? Extend E> c) ArrayList (capacitat int)

El primer constructor implementa una llista de matrius buida. El segon el constructor implementa una llista de matrius inicialitzada mitjançant el Col·lecció c elements. El tercer el constructor implementa la llista de matrius amb el capacitat previst en l’argument. Treballant amb ArrayList, de vegades caldrà convertir la Col·lecció ArrayList en una matriu. Es pot fer trucant toArray ().

Definició de LinkedList

Com ArrayList, Llista d'enllaç també és un Col · lecció usos de classe llista doblement enllaçada com a estructura interna de dades per emmagatzemar els elements de la llista. La classe LinkedList s’estén AbstractSequentialList i implementa el Llista, Deque i Cua interfícies. La llista d'enllaços implementada mitjançant LinkedList no es pot accedir aleatòriament. Si voleu recuperar qualsevol element de la llista, heu de repetir la llista per cercar aquest element.

Hi ha dos constructors a la classe LinkedList.

LinkedList () LinkedList (la col·lecció <? Extend E> c)

El primer constructor crea una llista enllaçada buida. El segon constructor crea una llista enllaçada, inicialitzada amb els elements de Col · lecció c.

A LinkedList, la manipulació de la llista és fàcil i ràpida. Això és degut a que si afegiu o suprimiu qualsevol element de la llista, no és necessari canviar els elements com a ArrayList. Però l’accés és més lent ja que no té índex per accedir directament als elements.

  1. Es pot accedir de forma aleatòria a la llista implementada per ArrayList perquè ArrayList adopta l'estructura de dades basada en l'índex de la matriu. D'altra banda, a la llista implementada per LinkedList no es pot accedir de forma aleatòria perquè per recuperar o accedir a un element concret de la llista, heu de recórrer la llista.
  2. L’estructura de dades interna utilitzada per ArrayList per emmagatzemar els elements de la llista és a matriu dinàmic que poden créixer o reduir-se a mesura que els elements s’afegeixen o s’eliminen de la llista. No obstant això, l'estructura de dades interna utilitzada per LinkedList per emmagatzemar els elements de la llista és llista doblement enllaçada.
  3. L 'ArrayList amplia la llista Resum Llista classe que també és una classe Collection mentre que, la classe LinkedList s'estén AbstractSequentialList que torna a ser una classe de col·lecció.
  4. Implementacions de classe ArrayList Llista interfície mentre que, la classe LinkedList implementa Llista, Cua, i Deque interfícies.
  5. Accedir a elements de la llista implementada mitjançant ArrayList és més ràpid ja que té una estructura de dades basada en índex. D'altra banda, no hi ha cap estructura basada en índexs a la llista implementada perLinkledList. Per tant, s’aplica un iterador sobre la llista per arribar a l’element al qual s’accedeix, que fa que hi accedeixi més lent a LinkedList.
  6. La manipulació és la manipulació en la llista implementada mitjançant ArrayList, ja que cada vegada que un element s'afegeix o esborra de la llista, els elements de la llista es desplacen per adaptar-se al canvi. D'altra banda, la manipulació és més ràpida a la llista implementada per LinkedList, ja que no requereix canviar elements de la llista en afegir o esborrar els elements de la llista.
  7. ArrayList actua com un llista ja que implementa la interfície de List mentre que, la Llista de Llistes actua com llista i cua ja que implementa la llista i la cua.

Conclusió:

Quan hi ha una addició o supressió freqüent dels elements de la llista, s'ha d'utilitzar LinkedList perquè es comporti millor durant la manipulació. Si la cerca freqüent s'aplica a la llista, ArrayList és la millor elecció, ja que funciona millor mentre accedeix a elements de la llista.