Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

Java LinkedList: Umfassender Leitfaden mit Beispielen

Java LinkedList

Entdecken Sie, wie Sie Javas LinkedList für effiziente Datenmanipulation nutzen können, komplett mit praktischen Code-Beispielen und Best-Practice-Einblicken.

Die LinkedList-Klasse im Java Collections Framework implementiert eine doppelt verkettete Liste. Jedes Element, oder Knoten, enthält drei Felder:


Java LinkedList erstellen

Instanziieren Sie eine LinkedList mit einem spezifischen Elementtyp:

LinkedList<Type> list = new LinkedList<>();

Beispiele:

// Integer-Liste LinkedList<Integer> numbers = new LinkedList<>(); // String-Liste LinkedList<String> words = new LinkedList<>();

Beispiel: LinkedList in Java erstellen

import java.util.LinkedList; class Main { public static void main(String[] args){ LinkedList<String> animals = new LinkedList<>(); animals.add("Dog"); animals.add("Cat"); animals.add("Cow"); System.out.println("LinkedList: " + animals); } }

Ausgabe

LinkedList: [Dog, Cat, Cow]

Dieser Code demonstriert eine grundlegende LinkedList namens animals, die mit drei Elementen über add() befüllt wird.


Wie eine Java LinkedList funktioniert

Im Gegensatz zu Arrays sind Knoten im Speicher verstreut und miteinander verkettet. Das Diagramm unten veranschaulicht drei Knoten und ihre Verbindungen.

Java LinkedList: Umfassender Leitfaden mit Beispielen

Für tiefere Einblicke siehe den Linked List-Artikel.


Wichtige LinkedList-Methoden

Im Folgenden die am häufigsten verwendeten Operationen:


1. Elemente hinzufügen

Verwenden Sie add(), um einen Knoten anzuhängen, optional mit Indexangabe:

import java.util.LinkedList; class Main { public static void main(String[] args){ LinkedList<String> animals = new LinkedList<>(); animals.add("Dog"); animals.add("Cat"); animals.add("Cow"); System.out.println("LinkedList: " + animals); animals.add(1, "Horse"); System.out.println("Updated LinkedList: " + animals); } }

Ausgabe

LinkedList: [Dog, Cat, Cow] Updated LinkedList: [Dog, Horse, Cat, Cow]

Der zweite add() fügt "Horse" an Index 1 ein und verschiebt nachfolgende Elemente.


2. Auf Elemente zugreifen

Rufen Sie ein Element über Index mit get() ab:

import java.util.LinkedList; class Main { public static void main(String[] args){ LinkedList<String> languages = new LinkedList<>(); languages.add("Python"); languages.add("Java"); languages.add("JavaScript"); System.out.println("LinkedList: " + languages); String str = languages.get(1); System.out.print("Element at index 1: " + str); } }

Ausgabe

LinkedList: [Python, Java, JavaScript] Element at index 1: Java

Iteration kann auch über iterator() oder listIterator() für fortgeschrittene Traversierung erfolgen.


3. Elemente aktualisieren

Ersetzen Sie ein Element an einem bestimmten Index mit set():

import java.util.LinkedList; class Main { public static void main(String[] args){ LinkedList<String> languages = new LinkedList<>(); languages.add("Java"); languages.add("Python"); languages.add("JavaScript"); languages.add("Java"); System.out.println("LinkedList: " + languages); languages.set(3, "Kotlin"); System.out.println("Updated LinkedList: " + languages); } }

Ausgabe

LinkedList: [Java, Python, JavaScript, Java] Updated LinkedList: [Java, Python, JavaScript, Kotlin]

4. Elemente entfernen

Löschen Sie ein Element über Index mit remove():

import java.util.LinkedList; class Main { public static void main(String[] args){ LinkedList<String> languages = new LinkedList<>(); languages.add("Java"); languages.add("Python"); languages.add("JavaScript"); languages.add("Kotlin"); System.out.println("LinkedList: " + languages); String removed = languages.remove(1); System.out.println("Removed Element: " + removed); System.out.println("Updated LinkedList: " + languages); } }

Ausgabe

LinkedList: [Java, Python, JavaScript, Kotlin] Removed Element: Python New LinkedList: [Java, JavaScript, Kotlin]

Weitere nützliche Methoden

MethodeBeschreibung
contains()Prüft, ob ein Wert existiert
indexOf()Index des ersten Vorkommens
lastIndexOf()Index des letzten Vorkommens
clear()Entfernt alle Elemente
iterator()Liefert einen Iterator

LinkedList als Queue und Deque

Da LinkedList Queue und Deque implementiert, unterstützt es FIFO- und LIFO-Operationen. Gängige Methoden umfassen:

MethodeBeschreibung
addFirst()Am Anfang hinzufügen
addLast()Am Ende hinzufügen
getFirst()Anfang ansehen
getLast()Ende ansehen
removeFirst()Am Anfang entfernen
removeLast()Am Ende entfernen
peek()Anfang ansehen ohne Entfernung
poll()Abrufen & Entfernen am Anfang
offer()Am Ende enqueuen

Beispiel: LinkedList als Queue

import java.util.LinkedList; import java.util.Queue; class Main { public static void main(String[] args){ Queue<String> languages = new LinkedList<>(); languages.add("Python"); languages.add("Java"); languages.add("C"); System.out.println("LinkedList: " + languages); String first = languages.peek(); System.out.println("Accessed Element: " + first); String removed = languages.poll(); System.out.println("Removed Element: " + removed); System.out.println("LinkedList after poll(): " + languages); languages.offer("Swift"); System.out.println("LinkedList after offer(): " + languages); } }

Ausgabe

LinkedList: [Python, Java, C] Accessed Element: Python Removed Element: Python LinkedList after poll(): [Java, C] LinkedList after offer(): [Java, C, Swift]

Beispiel: LinkedList als Deque

import java.util.LinkedList; import java.util.Deque; class Main { public static void main(String[] args){ Deque<String> animals = new LinkedList<>(); animals.add("Cow"); System.out.println("LinkedList: " + animals); animals.addFirst("Dog"); System.out.println("LinkedList after addFirst(): " + animals); animals.addLast("Zebra"); System.out.println("LinkedList after addLast(): " + animals); animals.removeFirst(); System.out.println("LinkedList after removeFirst(): " + animals); animals.removeLast(); System.out.println("LinkedList after removeLast(): " + animals); } }

Ausgabe

LinkedList: [Cow] LinkedList after addFirst(): [Dog, Cow] LinkedList after addLast(): [Dog, Cow, Zebra] LinkedList after removeFirst(): [Cow, Zebra] LinkedList after removeLast(): [Cow]

Durch eine LinkedList iterieren

Die erweiterte for-Schleife bietet eine prägnante Möglichkeit, Elemente zu durchlaufen:

import java.util.LinkedList; class Main { public static void main(String[] args){ LinkedList<String> animals = new LinkedList<>(); animals.add("Cow"); animals.add("Cat"); animals.add("Dog"); System.out.println("LinkedList: " + animals); System.out.println("Accessing linked list elements:"); for(String animal: animals){ System.out.print(animal + ", "); } } }

Ausgabe

LinkedList: [Cow, Cat, Dog] Accessing linked list elements: Cow, Cat, Dog,

LinkedList vs. ArrayList

Beide Klassen implementieren List, unterscheiden sich aber in Performance-Eigenschaften:

LinkedListArrayList
Implementiert List, Queue, DequeImplementiert List
Knoten speichert prev, data, nextEin Element pro Array-Slot
Doppelt verkettete StrukturGrößenveränderbares Array
Einfügungen/Löschungen O(1) bei bekannter PositionEinfügungen nach Index erfordern Shifting O(n)
Zufälliger Zugriff erfordert Traversierung O(n)Direkter Indexzugriff O(1)

Hinweis: Sie können eine LinkedList über jedes ihrer Interfaces instanziieren:

// über List List<String> animals1 = new LinkedList<>(); // über Queue Queue<String> animals2 = new LinkedList<>(); // über Deque Deque<String> animals3 = new LinkedList<>();

Bei Verwendung einer Interface-Referenz sind nur die Methoden dieses Interfaces verfügbar.


Java

  1. Java Operatoren meistern: Typen, Syntax und praktische Beispiele
  2. Java Kommentare: Typen, Verwendung und Best Practices
  3. Java Enhanced For-Schleife meistern: Syntax, Beispiele und Best Practices
  4. Java Strings meistern: Erstellung, Methoden und Best Practices
  5. Java-Schnittstellen meistern: Konzepte, Implementierung und Best Practices
  6. Java anonyme innere Klassen meistern: Definition, Syntax und praktische Beispiele
  7. Java Try-With-Resources meistern: Automatisches Ressourcenmanagement erklärt
  8. Java Annotations erklärt: Typen, Platzierung und praktische Beispiele
  9. Java Assertions: Praktischer Leitfaden zur Fehlererkennung und Code-Reliabilität
  10. Java Vector verstehen: Verwendung, Funktionen und Vergleich mit ArrayList