logo

LinkedList in Java

Die verknüpfte Liste ist Teil der Sammlungsrahmen im java.util-Paket vorhanden. Diese Klasse ist eine Implementierung der Datenstruktur der doppelt verknüpften Liste.

Der Hauptunterschied zwischen einer normalen verknüpften Liste und einer doppelt verknüpften Liste besteht darin, dass eine doppelt verknüpfte Liste einen zusätzlichen Zeiger enthält, der normalerweise als vorheriger Zeiger bezeichnet wird, zusammen mit dem nächsten Zeiger und den Daten, die in der einfach verknüpften Liste vorhanden sind.



Konstruktoren in der LinkedList:

Um eine LinkedList zu erstellen, müssen wir ein Objekt der LinkedList-Klasse erstellen. Die LinkedList-Klasse besteht aus verschiedenen Konstruktoren, die die mögliche Erstellung der Liste ermöglichen. Die folgenden Konstruktoren sind in dieser Klasse verfügbar:

1. LinkedList(): Dieser Konstruktor wird verwendet, um eine leere verknüpfte Liste zu erstellen. Wenn wir eine leere LinkedList mit dem Namen ll erstellen möchten, kann diese wie folgt erstellt werden:

LinkedList ll = new LinkedList();



2. LinkedList(Sammlung C): Mit diesem Konstruktor wird eine geordnete Liste erstellt, die alle Elemente einer angegebenen Sammlung enthält, wie sie vom Iterator der Sammlung zurückgegeben werden. Wenn wir eine LinkedList mit dem Namen ll erstellen möchten, kann diese wie folgt erstellt werden:

LinkedList ll = new LinkedList(C);

Methoden für Java LinkedList:

Methode Beschreibung
add(int index, E-Element) Diese Methode fügt das angegebene Element an der angegebenen Position in dieser Liste ein.
hinzufügen(Und und) Diese Methode hängt das angegebene Element an das Ende dieser Liste an.
addAll(int index, Collection c) Diese Methode fügt alle Elemente in der angegebenen Sammlung in diese Liste ein, beginnend an der angegebenen Position.
addAll(Sammlung c) Diese Methode hängt alle Elemente in der angegebenen Sammlung an das Ende dieser Liste an, und zwar in der Reihenfolge, in der sie vom Iterator der angegebenen Sammlung zurückgegeben werden.
addFirst(E e) Diese Methode fügt das angegebene Element am Anfang dieser Liste ein.
addLast(E e) Diese Methode hängt das angegebene Element an das Ende dieser Liste an.
klar() Diese Methode entfernt alle Elemente aus dieser Liste.
Klon() Diese Methode gibt eine flache Kopie dieser LinkedList zurück.
enthält(Objekt o) Diese Methode gibt true zurück, wenn diese Liste das angegebene Element enthält.
absteigenderIterator() Diese Methode gibt einen Iterator über die Elemente in dieser Deque in umgekehrter Reihenfolge zurück.
Element() Diese Methode ruft den Kopf (erstes Element) dieser Liste ab, entfernt ihn jedoch nicht.
get(int index) Diese Methode gibt das Element an der angegebenen Position in dieser Liste zurück.
getFirst() Diese Methode gibt das erste Element in dieser Liste zurück.
getLast() Diese Methode gibt das letzte Element in dieser Liste zurück.
indexOf(Objekt o) Diese Methode gibt den Index des ersten Vorkommens des angegebenen Elements in dieser Liste zurück oder -1, wenn diese Liste das Element nicht enthält.
lastIndexOf(Objekt o) Diese Methode gibt den Index des letzten Vorkommens des angegebenen Elements in dieser Liste zurück oder -1, wenn diese Liste das Element nicht enthält.
listIterator(int index) Diese Methode gibt einen Listeniterator der Elemente in dieser Liste (in der richtigen Reihenfolge) zurück, beginnend an der angegebenen Position in der Liste.
Angebot(E e) Diese Methode fügt das angegebene Element als Ende (letztes Element) dieser Liste hinzu.
offerFirst(E und) Diese Methode fügt das angegebene Element am Anfang dieser Liste ein.
offerLast(E e) Diese Methode fügt das angegebene Element am Ende dieser Liste ein.
spähen() Diese Methode ruft den Kopf (erstes Element) dieser Liste ab, entfernt ihn jedoch nicht.
peekFirst() Diese Methode ruft das erste Element dieser Liste ab, entfernt es jedoch nicht, oder gibt null zurück, wenn diese Liste leer ist.
peekLast() Diese Methode ruft das letzte Element dieser Liste ab, entfernt es jedoch nicht, oder gibt null zurück, wenn diese Liste leer ist.
Umfrage() Diese Methode ruft den Kopf (erstes Element) dieser Liste ab und entfernt ihn.
pollFirst() Diese Methode ruft das erste Element dieser Liste ab und entfernt es oder gibt null zurück, wenn diese Liste leer ist.
pollLast() Diese Methode ruft das letzte Element dieser Liste ab und entfernt es oder gibt null zurück, wenn diese Liste leer ist.
Pop() Diese Methode entfernt ein Element aus dem durch diese Liste dargestellten Stapel.
push(E und) Diese Methode verschiebt ein Element auf den durch diese Liste dargestellten Stapel.
entfernen() Diese Methode ruft den Kopf (erstes Element) dieser Liste ab und entfernt ihn.
entfernen(int index) Diese Methode entfernt das Element an der angegebenen Position in dieser Liste.
entfernen(Objekt o) Diese Methode entfernt das erste Vorkommen des angegebenen Elements aus dieser Liste, sofern es vorhanden ist.
removeFirst() Diese Methode entfernt das erste Element aus dieser Liste und gibt es zurück.
removeFirstOccurrence(Objekt o) Diese Methode entfernt das erste Vorkommen des angegebenen Elements in dieser Liste (beim Durchlaufen der Liste von Kopf bis Ende).
RemoveLast() Diese Methode entfernt das letzte Element aus dieser Liste und gibt es zurück.
removeLastOccurrence(Objekt o) Diese Methode entfernt das letzte Vorkommen des angegebenen Elements in dieser Liste (beim Durchlaufen der Liste von Kopf bis Ende).
set(int index, E-Element) Diese Methode ersetzt das Element an der angegebenen Position in dieser Liste durch das angegebene Element.
Größe() Diese Methode gibt die Anzahl der Elemente in dieser Liste zurück.
Splitterator() Diese Methode erstellt einen spät bindenden und ausfallsicheren Spliterator über die Elemente in dieser Liste.
toArray() Diese Methode gibt ein Array zurück, das alle Elemente in dieser Liste in der richtigen Reihenfolge (vom ersten bis zum letzten Element) enthält.
toArray(T[] a) Diese Methode gibt ein Array zurück, das alle Elemente in dieser Liste in der richtigen Reihenfolge (vom ersten bis zum letzten Element) enthält. Der Laufzeittyp des zurückgegebenen Arrays ist der des angegebenen Arrays.
toString() Diese Methode gibt eine Zeichenfolge zurück, die alle Elemente in dieser Liste in der richtigen Reihenfolge (vom ersten bis zum letzten Element) enthält. Jedes Element ist durch Kommas getrennt und die Zeichenfolge ist in eckige Klammern eingeschlossen.

Nachfolgend finden Sie die Implementierung der oben genannten Vorgänge:



Java




// Java Program to Demonstrate> // Implementation of LinkedList> // class> > // Importing required classes> import> java.util.*;> > // Main class> public> class> GFG {> > >// Driver code> >public> static> void> main(String args[])> >{> >// Creating object of the> >// class linked list> >LinkedList ll =>new> LinkedList();> > >// Adding elements to the linked list> >ll.add(>'A'>);> >ll.add(>'B'>);> >ll.addLast(>'C'>);> >ll.addFirst(>'D'>);> >ll.add(>2>,>'E'>);> > >System.out.println(ll);> > >ll.remove(>'B'>);> >ll.remove(>3>);> >ll.removeFirst();> >ll.removeLast();> > >System.out.println(ll);> >}> }>

>

>

Ausgabe

[D, A, E, B, C] [A]>

List-ArrayList-in-Java-In-Depth-Study

In der obigen Abbildung sind AbstractList , CopyOnWriteArrayList und AbstractSequentialList die Klassen, die die Listenschnittstelle implementieren. In jeder der genannten Klassen ist eine eigene Funktionalität implementiert. Sie sind:

    AbstractList: Diese Klasse wird verwendet, um eine nicht veränderbare Liste zu implementieren, für die man nur diese AbstractList-Klasse erweitern und nur die Methoden get() und size() implementieren muss. CopyOnWriteArrayList: Diese Klasse implementiert die Listenschnittstelle. Es handelt sich um eine erweiterte Version von ArrayList, bei der alle Änderungen (Hinzufügen, Festlegen, Entfernen usw.) durch Erstellen einer neuen Kopie der Liste implementiert werden.

Durchführen verschiedener Vorgänge für LinkedList:

  • Elemente hinzufügen
  • Elemente aktualisieren
  • Elemente entfernen
  • Iterieren über Elemente
  • Zu Array();
  • Größe();
  • entferne First();
  • last() entfernen;

Vorgang 1: Elemente hinzufügen

Um ein Element zu einer ArrayList hinzuzufügen, können wir die Methode add() verwenden. Diese Methode ist überladen, um mehrere Vorgänge basierend auf unterschiedlichen Parametern auszuführen. Sie sind:

    add(Object): Mit dieser Methode wird ein Element am Ende der LinkedList hinzugefügt. add(int index, Object): Mit dieser Methode wird ein Element an einem bestimmten Index in der LinkedList hinzugefügt.

Unten ist die Implementierung der obigen Operation:

Java




// Java program to add elements> // to a LinkedList> > import> java.util.*;> > public> class> GFG {> > >public> static> void> main(String args[])> >{> >LinkedList ll =>new> LinkedList();> > >ll.add(>'Geeks'>);> >ll.add(>'Geeks'>);> >ll.add(>1>,>'For'>);> > >System.out.println(ll);> >}> }>

>

>

Ausgabe

[Geeks, For, Geeks]>

Vorgang 2: Elemente verändern

Wenn wir nach dem Hinzufügen der Elemente das Element ändern möchten, kann dies mit der Methode set() erfolgen. Da eine LinkedList indiziert ist, wird das Element, das wir ändern möchten, durch den Index des Elements referenziert. Daher benötigt diese Methode einen Index und das aktualisierte Element, das an diesem Index eingefügt werden muss.

Unten ist die Implementierung der obigen Operation:

Java




// Java program to change elements> // in a LinkedList> > import> java.util.*;> > public> class> GFG {> > >public> static> void> main(String args[])> >{> >LinkedList ll =>new> LinkedList();> > >ll.add(>'Geeks'>);> >ll.add(>'Geeks'>);> >ll.add(>1>,>'Geeks'>);> > >System.out.println(>'Initial LinkedList '> + ll);> > >ll.set(>1>,>'For'>);> > >System.out.println(>'Updated LinkedList '> + ll);> >}> }>

Aus CSV-Datei in Java lesen
>

>

Ausgabe

Initial LinkedList [Geeks, Geeks, Geeks] Updated LinkedList [Geeks, For, Geeks]>

Vorgang 3: Elemente entfernen

Um ein Element aus einer LinkedList zu entfernen, können wir die Methode „remove()“ verwenden. Diese Methode ist überladen, um mehrere Vorgänge basierend auf unterschiedlichen Parametern auszuführen. Sie sind:

    Remove(Object): Diese Methode wird verwendet, um einfach ein Objekt aus der LinkedList zu entfernen. Wenn mehrere solcher Objekte vorhanden sind, wird das erste Vorkommen des Objekts entfernt. Remove(int Index): Da eine LinkedList indiziert ist, nimmt diese Methode einen ganzzahligen Wert an, der einfach das Element entfernt, das an diesem bestimmten Index in der LinkedList vorhanden ist. Nachdem das Element entfernt wurde und die Indizes der Elemente aktualisiert wurden, wird auch das Objekt von LinkedList aktualisiert, sodass nach dem Löschen des Elements/der Elemente eine neue Liste entsteht.

Unten ist die Implementierung der obigen Operation:

Größe der Latexschrift

Java




// Java program to remove elements> // in a LinkedList> > import> java.util.*;> > public> class> GFG {> > >public> static> void> main(String args[])> >{> >LinkedList ll =>new> LinkedList();> > >ll.add(>'Geeks'>);> >ll.add(>'Geeks'>);> >ll.add(>1>,>'For'>);> > >System.out.println(>'Initial LinkedList '> + ll);> > >// Function call> >ll.remove(>1>);> > >System.out.println(>'After the Index Removal '> + ll);> > >ll.remove(>'Geeks'>);> > >System.out.println(>'After the Object Removal '> >+ ll);> >}> }>

>

>

Ausgabe

Initial LinkedList [Geeks, For, Geeks] After the Index Removal [Geeks, Geeks] After the Object Removal [Geeks]>

Operation 4: Iterieren der LinkedList

Es gibt mehrere Möglichkeiten, LinkedList zu durchlaufen. Die bekanntesten Methoden sind die Verwendung der einfachen for-Schleife in Kombination mit einer get()-Methode, um das Element an einem bestimmten Index abzurufen, und der erweiterten for-Schleife.

Nachfolgend finden Sie die Implementierung der obigen Operation:

Java




// Java program to iterate the elements> // in an LinkedList> > import> java.util.*;> > public> class> GFG {> > >public> static> void> main(String args[])> >{> >LinkedList ll> >=>new> LinkedList();> > >ll.add(>'Geeks'>);> >ll.add(>'Geeks'>);> >ll.add(>1>,>'For'>);> > >// Using the Get method and the> >// for loop> >for> (>int> i =>0>; i System.out.print(ll.get(i) + ' '); } System.out.println(); // Using the for each loop for (String str : ll) System.out.print(str + ' '); } }>

>

>

Ausgabe

Geeks For Geeks Geeks For Geeks>

Operation 4: Verknüpfte Liste mit To Array mithilfe von toArray();

Java




import> java.util.*;> public> class> GFG2 {> >public> static> void> main(String[] args)> >{> >LinkedList list=>new> LinkedList();> >list.add(>123>);> >list.add(>12>);> >list.add(>11>);> >list.add(>1134>);> >System.out.println(>'LinkedList: '>+ list);> >Object[] a = list.toArray();> >System.out.print(>'After converted LinkedList to Array: '>);> >for>(Object element : a)> >System.out.print(element+>' '>);> >}> }>

>

>

Ausgabe

LinkedList: [123, 12, 11, 1134] After converted LinkedList to Array: 123 12 11 1134>

Operation 5-size();

Java


in Ordnung



import> java.io.*;> import> java.util.LinkedList;> public> class> GFG2 {> >public> static> void> main(String args[]) {> >LinkedList list =>new> LinkedList();> >list.add(>'Geeks for Geeks '>);> >list.add(>'is best '>);> >// Displaying the size of the list> >System.out.println(>'The size of the linked list is: '> + list.size());> >}> }>

>

>

Ausgabe

The size of the linked list is: 2>

Operation 7 – removeFirst();

Java




import> java.io.*;> import> java.util.LinkedList;> public> class> GFG2 {> >public> static> void> main(String args[]) {> > >LinkedList list =>new> LinkedList();> >list.add(>10>);> >list.add(>20>);> >list.add(>30>);> >System.out.println(>'LinkedList:'> + list);> >System.out.println(>'The remove first element is: '> + list.removeFirst());> >// Displaying the final list> >System.out.println(>'Final LinkedList:'> + list);> >}> }>

>

>

Ausgabe

LinkedList:[10, 20, 30] The remove first element is: 10 Final LinkedList:[20, 30]>

Operation 8-removelast();

Java




import> java.io.*;> import> java.util.LinkedList;> public> class> GFG2 {> >public> static> void> main(String args[])> >{> > >LinkedList list =>new> LinkedList();> >list.add(>10>);> >list.add(>20>);> >list.add(>30>);> >System.out.println(>'LinkedList:'> + list);> >// Remove the tail using removeLast()> >System.out.println(>'The last element is removed: '> + list.removeLast());> >// Displaying the final list> >System.out.println(>'Final LinkedList:'> + list);> >// Remove the tail using removeLast()> >System.out.println(>'The last element is removed: '> + list.removeLast());> >// Displaying the final list> >System.out.println(>'Final LinkedList:'> + list);> >}> }>

>

>

Ausgabe

LinkedList:[10, 20, 30] The last element is removed: 30 Final LinkedList:[10, 20] The last element is removed: 20 Final LinkedList:[10]>

Die LinkedList-Klasse in Java ist Teil des Java Collections Framework und stellt eine verknüpfte Listenimplementierung der List-Schnittstelle bereit. Es ermöglicht das Speichern und Abrufen von Elementen in einer doppelt verknüpften Listendatenstruktur, in der jedes Element mit seinen Vorgänger- und Nachfolgerelementen verknüpft ist.

Hier ist ein einfaches Beispiel, das zeigt, wie eine LinkedList in Java verwendet wird:

Java




import> java.util.LinkedList;> > public> class> LinkedListExample {> >public> static> void> main(String[] args) {> >// Create a new linked list> >LinkedList linkedList =>new> LinkedList();> > >// Add elements to the linked list> >linkedList.add(>1>);> >linkedList.add(>2>);> >linkedList.add(>3>);> > >// Add an element to the beginning of the linked list> >linkedList.addFirst(>0>);> > >// Add an element to the end of the linked list> >linkedList.addLast(>4>);> > >// Print the elements of the linked list> >for> (>int> i : linkedList) {> >System.out.println(i);> >}> >}> }>

>

>

Ausgabe

0 1 2 3 4>

Vorteile der Verwendung von LinkedList in Java:

  1. Dynamische Größe: Wie bei Vector kann die Größe einer LinkedList dynamisch wachsen oder schrumpfen, sodass Sie sich nicht um die Festlegung einer Anfangsgröße kümmern müssen.
  2. Effiziente Einfügungen und Löschungen: LinkedList ist eine effiziente Datenstruktur zum Einfügen oder Löschen von Elementen in der Mitte der Liste, da Sie nur die Verknüpfungen zwischen Elementen ändern müssen, anstatt alle Elemente nach der Einfüge- oder Löschstelle zu verschieben.
  3. Flexible Iteration: Mit einer verknüpften Liste können Sie die Liste effizient in beide Richtungen durchlaufen, da jedes Element einen Verweis sowohl auf sein Vorgänger- als auch auf sein Nachfolgerelement hat.

Nachteile der Verwendung von LinkedList in Java:

  1. Leistung: LinkedList hat eine langsamere Leistung als ArrayList, wenn es um den Zugriff auf einzelne Elemente geht. Dies liegt daran, dass Sie die Liste durchlaufen müssen, um das gewünschte Element zu erreichen, während Sie mit ArrayList einfach über einen Index auf das gewünschte Element zugreifen können.
  2. Speicheraufwand: LinkedList benötigt mehr Speicher als ArrayList, da jedes Element zusätzlichen Speicher für die Verknüpfungen zu seinen Vorgänger- und Nachfolgerelementen benötigt.

Nachschlagewerk:

Ein gutes Nachschlagewerk zum Erlernen des Java Collections Framework und LinkedList ist Java Collections von Naftalin und Wadler. Dieses Buch bietet einen umfassenden Einblick in das Java-Collections-Framework, einschließlich LinkedList, und enthält viele Beispiele und Übungen, die Ihnen helfen, zu verstehen, wie Sie diese Klassen effektiv nutzen.