Direkt zum Inhalt
Urkunden
Java SchlüsselwörterJava-ArraysJava Objektorientierte ProgrammierungJava File HandlingEinführung in JavaGrundlagen der Java-Sprache

Java LinkedList

Die Klasse LinkedList in Java ist ein Teil des Java Collections Framework und implementiert die Schnittstellen List und Deque. Sie ist eine doppelt verkettete Liste, die eine dynamische Datenstruktur zum Speichern von Elementen bietet. Im Gegensatz zu Arrays ermöglicht LinkedList das effiziente Einfügen und Entfernen von Elementen an beiden Enden und in der Mitte der Liste.

Verwendung

LinkedList wird verwendet, wenn häufige Einfügungen und Löschungen erforderlich sind. Sie ist besonders nützlich, wenn die Größe der Liste nicht im Voraus bekannt ist oder wenn Elemente an beiden Enden der Liste hinzugefügt oder entfernt werden müssen.

Syntax


LinkedList<Type> linkedList = new LinkedList<>();
  • Type: Der Typ der in der Liste gespeicherten Elemente.
  • linkedList: Der Name der LinkedList Instanz.

Beispiele

Beispiel 1: Grundlegende Operationen


import java.util.LinkedList;

public class LinkedListExample {
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<>();
        
        // Adding elements
        list.add("Apple");
        list.add("Banana");
        list.add("Cherry");
        
        // Accessing elements
        System.out.println("First element: " + list.getFirst());
        System.out.println("Last element: " + list.getLast());
        
        // Removing elements
        list.removeFirst();
        list.removeLast();
        
        System.out.println("List after removals: " + list);
    }
}

Dieses Beispiel demonstriert grundlegende Operationen wie das Hinzufügen, Zugreifen und Entfernen von Elementen aus einer LinkedList. Wir fügen der Liste drei Früchte hinzu, greifen auf das erste und das letzte Element zu und entfernen sie dann.

Beispiel 2: Iterieren durch eine LinkedList


import java.util.LinkedList;
import java.util.Iterator;

public class LinkedListIteration {
    public static void main(String[] args) {
        LinkedList<Integer> numbers = new LinkedList<>();
        numbers.add(10);
        numbers.add(20);
        numbers.add(30);
        
        Iterator<Integer> iterator = numbers.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }
}

In diesem Beispiel verwenden wir eine Iterator, um die LinkedList von ganzen Zahlen zu durchlaufen. Die Iterator bietet eine Möglichkeit, auf jedes Element der Reihe nach zuzugreifen.

Beispiel 3: LinkedList als Warteschlange verwenden


import java.util.LinkedList;
import java.util.Queue;

public class LinkedListAsQueue {
    public static void main(String[] args) {
        Queue<String> queue = new LinkedList<>();
        
        // Enqueue elements
        queue.add("First");
        queue.add("Second");
        queue.add("Third");
        
        // Dequeue elements
        System.out.println("Removed: " + queue.poll());
        System.out.println("Queue after removal: " + queue);
    }
}

Hier wird LinkedList als Queue verwendet. Die Elemente werden mit add() hinzugefügt und mit poll() entfernt, um das FIFO-Verhalten (First-In-First-Out) zu demonstrieren.

Tipps und bewährte Praktiken

  • Wann zu verwenden: Verwende LinkedList, wenn du häufige Einfügungen und Löschungen benötigst, besonders am Anfang oder Ende der Liste.
  • Leistungsüberlegungen: LinkedList hat im Vergleich zu ArrayList einen höheren Overhead für den Zugriff auf Elemente nach Index, da der Zugriff sequentiell erfolgt.
  • Nullelemente: LinkedList erlaubt null Elemente, so dass mögliche NullPointerException Szenarien behandelt werden können.
  • Thread Safety: LinkedList ist nicht synchronisiert. Verwende Collections.synchronizedList(new LinkedList<>()) für thread-sichere Operationen.
  • Deque-Operationen: Verwende LinkedList als Deque für doppelendige Warteschlangenoperationen, wie addFirst(), addLast(), removeFirst() und removeLast().

Java Grundlagen lernen

Baue deine Java-Kenntnisse von Grund auf auf und beherrsche Programmierkonzepte.
Kostenloses Lernen beginnen