Diferența dintre ArrayList și LinkedList în Java

Autor: Laura McKinney
Data Creației: 3 Aprilie 2021
Data Actualizării: 15 Mai 2024
Anonim
Diferența dintre ArrayList și LinkedList în Java - Tehnologie
Diferența dintre ArrayList și LinkedList în Java - Tehnologie

Conţinut


ArrayList și LinkedList sunt Colectie clase și ambele pun în aplicare Listă interfață. Clasa ArrayList creează lista care este stocată intern într-un dinamic mulțime care crește sau se micșorează ca mărime pe măsură ce elementele sunt adăugate sau șterse din acesta. LinkedList creează de asemenea lista care este stocată intern într-un De două ori Legat Listă. Ambele clase sunt utilizate pentru a stoca elementele din listă, dar diferența majoră între ambele clase ArrayList și LinkedList este că ArrayList permite accesul aleatoriu la elementele din listă, deoarece funcționează pe un Pe baza unui indice structură de date. Pe de altă parte, LinkedList nu permite accesul la întâmplare, deoarece nu are indexuri pentru a accesa direct elementele, trebuie să traverseze lista pentru a prelua sau accesa un element din listă.


Să discutăm alte diferențe între ArrayList și LinkedList cu ajutorul graficului de comparație prezentat mai jos.

  1. Diagramă de comparație
  2. Definiție
  3. Diferențele cheie
  4. Concluzie

Diagramă de comparație

Baza pentru comparațieArrayListLinkedList
De bază ArrayList permite accesul aleatoriu la elementele din listă.LinkedList nu permite accesul aleatoriu la elementele din listă.
Structură de dateStructura internă utilizată pentru stocarea elementelor este tabloul dinamic.Structura internă utilizată pentru stocarea elementelor este dublu listă de legături.
PrelungeșteArrayList extinde clasa AbstarctList.LinkedList extinde AbstractSequentialList.
ustensileAbstractList implementează interfața List.LinkedList implementează List, Deque, Queue.
Acces Accesul la elemente din listă este mai rapid în ArrayList.Accesul la elemente din listă este mai lent în LinkedList.
ManipulareManipularea elementelor din listă este mai lentă în ArrayList.Manipularea elementelor din listă este mai rapidă în LinkedList.
ComportamentArraylList se comportă ca List pe măsură ce implementează lista.LinkedList se comportă ca List și a Queue, deoarece implementează List și Queue.


Definiția ArrayList

AbstractList clasa este definită de Cadrul de colectare. Se extinde AbstarctList și instrumente Listă interfață. Utilizări ArrayList matrice dinamică adică tabloul de lungime variabilă ca structură internă de date pentru a stoca elementele din listă. Necesitatea ArrayList apare pe măsură ce matricea în Java este de lungime fixă. Deci nu poate crește sau micșora dimensiunea, deoarece elementele sunt adăugate sau șterse din tablou. Deci, trebuie să știți în prealabil dimensiunea tabloului necesar. Dar lista de tablouri implementată folosind clasa ArrayList poate crește și scade în dimensiune, deoarece elementele sunt adăugate sau șterse din tablou.

Poate fi accesată lista de tabele implementată folosind ArrayList la întâmplare deoarece ArrayList operează pe baza indexului. Deci, știind indexul puteți accesa direct elementul din listă. Există trei constructori ai ArrayList:

ArrayList () ArrayList (Colecția <? Extinde E> c) ArrayList (capacitate int)

primul constructorul implementează o listă de tablă goală. al doilea constructorul pune în aplicare o listă matricială inițiată folosind Colecția c elemente. al treilea constructorul implementează lista cu matricea capacitate prevăzută în argument. Lucrând cu ArrayList, uneori va trebui să convertiți Colecția ArrayList într-un tablou. Se poate face apelând toArray ().

Definiția LinkedList

Ca ArrayList, LinkedList este de asemenea un Colectie utilizări de clasă listă dublă legată ca structură internă de date pentru a stoca elementele din listă. Clasa LinkedList se extinde AbstractSequentialList și pune în aplicare Listă, Deque și Coadă interfețe. Lista de legături implementată folosind LinkedList nu poate fi accesată la întâmplare. Dacă doriți să recuperați orice element din listă, trebuie să repetați lista pentru a căuta acel element.

Există doi constructori din clasa LinkedList.

LinkedList () LinkedList (Colecția <? Extinde E> c)

primul constructorul creează o listă goală legată. al doilea constructorul creează o listă legată, inițializată cu elementele din Colectie c.

În LinkedList, manipularea listei este ușoară și rapidă. Acest lucru se datorează faptului că dacă adăugați sau ștergeți orice element din listă, atunci nu este nevoie să schimbați elementele ca în ArrayList. Dar accesarea este mai lentă, deoarece nu are index pentru a accesa direct elementele.

  1. Lista implementată de ArrayList poate fi accesată la întâmplare, deoarece ArrayList adoptă structura de date bazată pe index. Pe de altă parte, lista implementată de LinkedList nu poate fi accesată la întâmplare, deoarece pentru regăsirea sau accesarea unui anumit element din listă trebuie să parcurgi lista.
  2. Structura internă de date utilizată de ArrayList pentru stocarea elementelor listei este a matrice dinamică care pot crește sau micșora pe măsură ce elementele sunt adăugate sau șterse din listă. Cu toate acestea, structura internă de date utilizată de LinkedList pentru a stoca elementele din listă este listă dublă legată.
  3. ArrayList extinde AbstractList clasă care este de asemenea o clasă de colectare, în timp ce clasa LinkedList se extinde AbstractSequentialList clasa care este din nou o clasă Colecție.
  4. Implementarea clasei ArrayList Listă interfață întrucât clasa LinkedList implementează Listă, Coadă, și Deque interfețe.
  5. Accesarea elementelor din lista implementată folosind ArrayList este mai repede deoarece are o structură de date bazată pe index. Pe de altă parte, nu există nicio structură bazată pe index în lista implementată deLinkledList. Prin urmare, un iterator este aplicat peste listă pentru a ajunge la elementul de accesat, care face accesarea Mai lent în LinkedList.
  6. Manipularea este Manipularea în lista implementată folosind ArrayList, deoarece de fiecare dată când un element este adăugat sau șters din listă, elementele din listă sunt mutate pentru a se adapta modificării. Pe de altă parte, manipularea este mai rapidă în lista implementată de LinkedList, deoarece nu necesită schimbarea elementelor din listă la adăugarea sau ștergerea elementelor din listă.
  7. ArrayList acționează ca un listă deoarece implementează interfața List întrucât, LinkedList acționează ca listă și coadă deoarece implementează List și Queue.

Concluzie:

Când există o adăugare sau ștergere frecventă a elementelor din listă, LinkedList trebuie utilizat deoarece funcționează mai bine în timpul manipulării. Dacă pe listă se aplică căutări frecvente, ArrayList este cea mai bună alegere, deoarece are o performanță mai bună în timp ce accesați elemente din listă.