logo

Razlika između ArrayList i LinkedList

ArrayList i LinkedList implementiraju sučelje List i održavaju redoslijed umetanja. Obje su nesinkronizirane klase.

niz datuma java

Međutim, postoje mnoge razlike između klasa ArrayList i LinkedList koje su navedene u nastavku.

ArrayListLinkedList
1) ArrayList interno koristi a dinamički niz za pohranjivanje elemenata.LinkedList interno koristi a dvostruko povezana lista za pohranjivanje elemenata.
2) Manipulacija s ArrayList je usporiti jer interno koristi niz. Ako se bilo koji element ukloni iz niza, svi ostali elementi se pomiču u memoriji.Manipulacija s LinkedListom je brže nego ArrayList jer koristi dvostruko povezanu listu, tako da nije potrebno pomicanje bitova u memoriji.
3) Klasa ArrayList može djelovati kao lista samo zato što implementira samo List.Klasa LinkedList može djelovati kao lista i red oboje jer implementira List i Deque sučelja.
4) ArrayList je bolje za pohranu i pristup podaci.LinkedList je bolji za manipulaciju podaci.
5) Memorijska lokacija za elemente ArrayList-a je kontinuirana.Mjesto za elemente povezanog popisa nije zarazno.
6) Općenito, kada se ArrayList inicijalizira, zadani kapacitet od 10 dodjeljuje se ArrayList-u.Ne postoji slučaj zadanog kapaciteta u LinkedList-u. U LinkedList-u prazan popis se stvara kada se LinkedList inicijalizira.
7) Da budemo precizni, ArrayList je polje promjenjive veličine.LinkedList implementira dvostruko povezani popis sučelja popisa.

Primjer ArrayList i LinkedList u Javi

Pogledajmo jednostavan primjer gdje koristimo i ArrayList i LinkedList.

Naziv datoteke: 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); } } 
Testirajte sada

Izlaz:

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

Bodovi za pamćenje

Slijedi nekoliko važnih točaka koje treba zapamtiti u vezi s ArrayList i LinkedList.

  • Kada je stopa dodavanja ili uklanjanja veća od čitanih scenarija, idite na LinkedList. S druge strane, kada je učestalost scenarija čitanja veća od stope dodavanja ili uklanjanja, tada ArrayList ima prednost nad LinkedListom.
  • Budući da su elementi ArrayList-a pohranjeni kompaktnije u usporedbi s LinkedList-om; stoga je ArrayList više prilagođen predmemoriji u usporedbi s LinkedListom. Stoga su šanse za promašaj predmemorije manje u ArrayList-u u usporedbi s LinkedList-om. Općenito se smatra da je LinkedList loš u cache-locality-u.
  • Memorijski troškovi u LinkedList-u veći su u usporedbi s ArrayList-om. To je zato što u LinkedList-u imamo dvije dodatne veze (sljedeću i prethodnu) jer je potrebno pohraniti adresu prethodnog i sljedećeg čvora, a te veze zauzimaju dodatni prostor. Takve veze nisu prisutne u ArrayList.