logo

Diferența dintre ArrayList și LinkedList

ArrayList și LinkedList implementează ambele interfața List și mențin ordinea de inserare. Ambele sunt clase nesincronizate.

șir de intrare java

Cu toate acestea, există multe diferențe între clasele ArrayList și LinkedList care sunt prezentate mai jos.

ArrayListLinkedList
1) ArrayList utilizează intern a matrice dinamică pentru a stoca elementele.LinkedList utilizează intern a listă dublu legată pentru a stoca elementele.
2) Manipularea cu ArrayList este încet deoarece folosește intern o matrice. Dacă orice element este eliminat din matrice, toate celelalte elemente sunt mutate în memorie.Manipularea cu LinkedList este Mai repede decât ArrayList, deoarece folosește o listă dublu legată, deci nu este necesară nicio schimbare de biți în memorie.
3) O clasă ArrayList poate acționează ca o listă doar pentru că implementează numai Listă.Clasa LinkedList poate acționează ca o listă și coadă atât pentru că implementează interfețele List și Deque.
4) ArrayList este mai bine pentru stocare și accesare date.LinkedList este mai bine pentru manipulare date.
5) Locația de memorie pentru elementele unui ArrayList este contiguă.Locația elementelor unei liste legate nu este contagioasă.
6) În general, atunci când o ArrayList este inițializată, o capacitate implicită de 10 este atribuită ArrayList.Nu există niciun caz de capacitate implicită într-o Lista Linked. În LinkedList, o listă goală este creată atunci când o LinkedList este inițializată.
7) Pentru a fi precis, un ArrayList este o matrice redimensionabilă.LinkedList implementează lista dublu legată a interfeței listei.

Exemplu de ArrayList și LinkedList în Java

Să vedem un exemplu simplu în care folosim ambele ArrayList și LinkedList.

Nume de fișier: TestArrayLinked.java

 import java.util.*; class TestArrayLinked{ public static void main(String args[]){ List al=new ArrayList();//creating arraylist al.add('Ravi');//adding object in arraylist al.add('Vijay'); al.add('Ravi'); al.add('Ajay'); List al2=new LinkedList();//creating linkedlist al2.add('James');//adding object in linkedlist al2.add('Serena'); al2.add('Swati'); al2.add('Junaid'); System.out.println('arraylist: '+al); System.out.println('linkedlist: '+al2); } } 
Testează-l acum

Ieșire:

arraylist: [Ravi,Vijay,Ravi,Ajay] linkedlist: [James,Serena,Swati,Junaid] 

Puncte de reținut

Următoarele sunt câteva puncte importante de reținut cu privire la ArrayList și LinkedList.

  • Când rata de adăugare sau eliminare este mai mare decât scenariile citite, atunci alegeți LinkedList. Pe de altă parte, atunci când frecvența scenariilor de citire este mai mare decât rata de adăugare sau eliminare, atunci ArrayList are prioritate față de LinkedList.
  • Deoarece elementele unui ArrayList sunt stocate mai compact în comparație cu o LinkedList; prin urmare, ArrayList este mai prietenos cu cache-ul în comparație cu LinkedList. Astfel, șansele de pierdere a memoriei cache sunt mai mici într-o ArrayList în comparație cu o LinkedList. În general, se consideră că un LinkedList este sărac în localitatea cache-ului.
  • Overhead de memorie în LinkedList este mai mult decât în ​​ArrayList. Se datorează faptului că, într-o LinkedList, avem două link-uri suplimentare (next și precedent), deoarece este necesar pentru a stoca adresa nodurilor precedente și următoare, iar aceste link-uri consumă spațiu suplimentar. Astfel de legături nu sunt prezente într-o ArrayList.