logo

Razlika med ArrayList in LinkedList

ArrayList in LinkedList izvajata vmesnik List in vzdržujeta vrstni red vstavljanja. Oba sta nesinhronizirana razreda.

poravnava slike v css

Vendar pa obstaja veliko razlik med razredoma ArrayList in LinkedList, ki so navedene spodaj.

ArrayListLinkedList
1) ArrayList interno uporablja a dinamični niz za shranjevanje elementov.LinkedList interno uporablja a dvojno vezan seznam za shranjevanje elementov.
2) Manipulacija z ArrayList je počasi ker interno uporablja matriko. Če katerikoli element odstranimo iz matrike, se vsi drugi elementi premaknejo v pomnilnik.Manipulacija s LinkedList je hitreje kot ArrayList, ker uporablja dvojno povezan seznam, tako da ni potreben premik bitov v pomnilniku.
3) Razred ArrayList lahko deluje kot seznam samo zato, ker izvaja samo seznam.Razred LinkedList lahko delujejo kot seznam in čakalna vrsta oboje, ker izvaja vmesnika List in Deque.
4) ArrayList je boljši za shranjevanje in dostop podatke.LinkedList je boljši za manipulacijo podatke.
5) Pomnilniška lokacija za elemente seznama ArrayList je sosednja.Lokacija elementov povezanega seznama ni nalezljiva.
6) Na splošno, ko je ArrayList inicializiran, je ArrayListu dodeljena privzeta zmogljivost 10.V LinkedListu ni primera privzete zmogljivosti. V LinkedList se ob inicializaciji LinkedList ustvari prazen seznam.
7) Če smo natančni, je ArrayList matrika, ki ji je mogoče spreminjati velikost.LinkedList implementira dvojno povezan seznam vmesnika seznama.

Primer ArrayList in LinkedList v Javi

Oglejmo si preprost primer, kjer uporabljamo tako ArrayList kot LinkedList.

Ime 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); } } 
Preizkusite zdaj

Izhod:

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

Točke, ki si jih je treba zapomniti

Sledi nekaj pomembnih točk, ki si jih morate zapomniti v zvezi z ArrayList in LinkedList.

  • Ko je stopnja dodajanja ali odstranjevanja višja od prebranih scenarijev, izberite LinkedList. Po drugi strani, ko je pogostost scenarijev branja večja od stopnje dodajanja ali odstranjevanja, ima ArrayList prednost pred LinkedList.
  • Ker so elementi seznama ArrayList shranjeni bolj kompaktno v primerjavi s seznamom LinkedList; zato je ArrayList bolj prijazen predpomnilniku kot LinkedList. Tako so možnosti za zgrešeni predpomnilnik manjše v ArrayList v primerjavi s LinkedList. Na splošno velja, da je seznam LinkedList slab glede lokalnosti predpomnilnika.
  • Stroški pomnilnika v LinkedList so večji v primerjavi z ArrayList. To je zato, ker imamo v LinkedList dve dodatni povezavi (naslednjo in prejšnjo), saj je treba shraniti naslov prejšnjega in naslednjega vozlišča, te povezave pa porabijo dodaten prostor. Takšne povezave niso prisotne v ArrayList.