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.
ArrayList | Lä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.