logo

Skillnaden mellan ArrayList och LinkedList

ArrayList och LinkedList implementerar båda listgränssnittet och upprätthåller insättningsordningen. Båda är icke-synkroniserade klasser.

hur man kontrollerar skärmens storlek

Det finns dock många skillnader mellan klasserna ArrayList och LinkedList som ges nedan.

ArrayListLänkad lista
1) ArrayList använder internt en dynamisk array för att lagra elementen.LinkedList använder internt en dubbelt länkad lista för att lagra elementen.
2) Manipulation med ArrayList är långsam eftersom det internt använder en array. Om något element tas bort från arrayen flyttas alla andra element i minnet.Manipulation med LinkedList är snabbare än ArrayList eftersom den använder en dubbellänkad lista, så ingen bitförskjutning krävs i minnet.
3) En ArrayList-klass kan fungera som en lista bara för att den implementerar enbart List.LinkedList-klassen kan fungera som en lista och kö både för att den implementerar List- och Deque-gränssnitt.
4) ArrayList är bättre för förvaring och åtkomst data.LinkedList är bättre att manipulera data.
5) Minnesplatsen för elementen i en ArrayList är sammanhängande.Platsen för elementen i en länkad lista är inte smittsam.
6) I allmänhet, när en ArrayList initieras, tilldelas ArrayList en standardkapacitet på 10.Det finns inget fall av standardkapacitet i en LinkedList. I LinkedList skapas en tom lista när en LinkedList initieras.
7) För att vara exakt är en ArrayList en array som kan ändras storlek.LinkedList implementerar den dubbellänkade listan i listgränssnittet.

Exempel på ArrayList och LinkedList i Java

Låt oss se ett enkelt exempel där vi använder både ArrayList och LinkedList.

Filnamn: 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); } } 
Testa det nu

Produktion:

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

Punkter att komma ihåg

Följande är några viktiga punkter att komma ihåg när det gäller en ArrayList och LinkedList.

  • När frekvensen för tillägg eller borttagning är högre än lässcenarierna, välj LinkedList. Å andra sidan, när frekvensen av lässcenarierna är mer än tilläggs- eller borttagningshastigheten, har ArrayList företräde framför LinkedList.
  • Eftersom elementen i en ArrayList lagras mer kompakt jämfört med en LinkedList; därför är ArrayList mer cache-vänlig jämfört med LinkedList. Således är chanserna för cachemissen mindre i en ArrayList jämfört med en LinkedList. I allmänhet anses det att en LinkedList har dålig cache-lokalitet.
  • Minnesoverhead i LinkedList är mer jämfört med ArrayList. Det beror på att vi i en LinkedList har två extra länkar (nästa och föregående) eftersom det krävs för att lagra adressen till föregående och nästa nod, och dessa länkar tar extra utrymme. Sådana länkar finns inte i en ArrayList.