logo

Verschil tussen ArrayList en LinkedList

ArrayList en LinkedList implementeren beide de List-interface en behouden de invoegvolgorde. Beide zijn niet-gesynchroniseerde klassen.

css afbeeldingen uitlijnen

Er zijn echter veel verschillen tussen de klassen ArrayList en LinkedList, die hieronder worden weergegeven.

ArrayLijstGelinkteLijst
1) ArrayList gebruikt intern een dynamische reeks om de elementen op te slaan.LinkedList maakt intern gebruik van een dubbel gelinkte lijst om de elementen op te slaan.
2) Manipulatie met ArrayList is langzaam omdat het intern een array gebruikt. Als een element uit de array wordt verwijderd, worden alle andere elementen in het geheugen verschoven.Manipulatie met LinkedList is sneller dan ArrayList omdat het een dubbel gekoppelde lijst gebruikt, zodat er geen bitverschuiving in het geheugen nodig is.
3) Een ArrayList-klasse kan dat wel fungeren als een lijst alleen omdat het alleen Lijst implementeert.LinkedList-klasse kan dat wel fungeren als een lijst en wachtrij beide omdat het List- en Deque-interfaces implementeert.
4) ArrayLijst is beter voor opslag en toegang gegevens.LinkedList is beter voor manipulatie gegevens.
5) De geheugenlocatie voor de elementen van een ArrayList is aaneengesloten.De locatie voor de elementen van een gekoppelde lijst is niet besmettelijk.
6) Wanneer een ArrayList wordt geïnitialiseerd, wordt doorgaans een standaardcapaciteit van 10 toegewezen aan de ArrayList.Er is geen sprake van standaardcapaciteit in een LinkedList. In LinkedList wordt een lege lijst gemaakt wanneer een LinkedList wordt geïnitialiseerd.
7) Om precies te zijn: een ArrayList is een aanpasbare array.LinkedList implementeert de dubbel gekoppelde lijst van de lijstinterface.

Voorbeeld van ArrayList en LinkedList in Java

Laten we een eenvoudig voorbeeld bekijken waarin we zowel ArrayList als LinkedList gebruiken.

Bestandsnaam: 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); } } 
Test het nu

Uitgang:

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

Punten om te onthouden

Hieronder volgen enkele belangrijke punten die u moet onthouden met betrekking tot een ArrayList en LinkedList.

  • Wanneer het toevoegings- of verwijderingspercentage hoger is dan de gelezen scenario's, kies dan voor de LinkedList. Aan de andere kant, wanneer de frequentie van de leesscenario's hoger is dan het toevoegings- of verwijderingspercentage, heeft ArrayList voorrang op LinkedList.
  • Omdat de elementen van een ArrayList compacter worden opgeslagen in vergelijking met een LinkedList; daarom is de ArrayList cachevriendelijker in vergelijking met de LinkedList. De kans op het missen van de cache is dus kleiner in een ArrayList dan in een LinkedList. Over het algemeen wordt aangenomen dat een LinkedList een slechte cachelocatie heeft.
  • De geheugenoverhead in de LinkedList is groter dan in de ArrayList. Het komt omdat we in een LinkedList twee extra links hebben (volgende en vorige), omdat het nodig is om het adres van de vorige en volgende knooppunten op te slaan, en deze links verbruiken extra ruimte. Dergelijke koppelingen zijn niet aanwezig in een ArrayList.