logo

Unterschied zwischen ArrayList und LinkedList

ArrayList und LinkedList implementieren beide die List-Schnittstelle und behalten die Einfügereihenfolge bei. Beide sind nicht synchronisierte Klassen.

Kali Linux-Terminal

Es gibt jedoch viele Unterschiede zwischen den Klassen ArrayList und LinkedList, die unten aufgeführt sind.

AnordnungslisteLinkedList
1) ArrayList verwendet intern a dynamisches Array um die Elemente zu speichern.LinkedList verwendet intern a doppelt verkettete Liste um die Elemente zu speichern.
2) Manipulation mit ArrayList ist langsam weil es intern ein Array verwendet. Wenn ein Element aus dem Array entfernt wird, werden alle anderen Elemente im Speicher verschoben.Manipulation mit LinkedList ist Schneller als ArrayList, da es eine doppelt verknüpfte Liste verwendet, sodass keine Bitverschiebung im Speicher erforderlich ist.
3) Eine ArrayList-Klasse kann als Liste fungieren nur, weil es nur List implementiert.Die LinkedList-Klasse kann fungieren als Liste und Warteschlange Beides, weil es List- und Deque-Schnittstellen implementiert.
4) ArrayList ist besser zum Aufbewahren und Zugreifen Daten.LinkedList ist besser zum Manipulieren Daten.
5) Der Speicherort für die Elemente einer ArrayList ist zusammenhängend.Der Speicherort für die Elemente einer verknüpften Liste ist nicht ansteckend.
6) Im Allgemeinen wird der ArrayList bei der Initialisierung einer ArrayList eine Standardkapazität von 10 zugewiesen.In einer LinkedList gibt es keinen Fall einer Standardkapazität. In LinkedList wird eine leere Liste erstellt, wenn eine LinkedList initialisiert wird.
7) Um genau zu sein, ist eine ArrayList ein in der Größe veränderbares Array.LinkedList implementiert die doppelt verknüpfte Liste der Listenschnittstelle.

Beispiel für ArrayList und LinkedList in Java

Sehen wir uns ein einfaches Beispiel an, in dem wir sowohl ArrayList als auch LinkedList verwenden.

Dateiname: 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); } } 
Testen Sie es jetzt

Ausgabe:

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

Punkte, die man sich merken sollte

Im Folgenden finden Sie einige wichtige Punkte, die Sie bei ArrayList und LinkedList beachten sollten.

  • Wenn die Hinzufügungs- oder Entfernungsrate höher ist als die Leseszenarien, dann entscheiden Sie sich für die LinkedList. Wenn andererseits die Häufigkeit der Leseszenarien höher ist als die Hinzufügungs- oder Entfernungsrate, hat ArrayList Vorrang vor LinkedList.
  • Da die Elemente einer ArrayList im Vergleich zu einer LinkedList kompakter gespeichert werden; Daher ist die ArrayList im Vergleich zur LinkedList Cache-freundlicher. Daher ist die Wahrscheinlichkeit eines Cache-Fehlers bei einer ArrayList geringer als bei einer LinkedList. Im Allgemeinen wird davon ausgegangen, dass eine LinkedList eine schlechte Cache-Lokalität aufweist.
  • Der Speicheraufwand in der LinkedList ist höher als in der ArrayList. Dies liegt daran, dass wir in einer LinkedList zwei zusätzliche Links (nächster und vorheriger) haben, da die Adressen des vorherigen und des nächsten Knotens gespeichert werden müssen und diese Links zusätzlichen Platz beanspruchen. Solche Links sind in einer ArrayList nicht vorhanden.