Industrial manufacturing
Industrial Internet of Things | Industrial materials | Equipment Maintenance and Repair | Industrial programming |
home  MfgRobots >> Industrial manufacturing >  >> Industrial programming >> Java

Java LinkedList: Comprehensive Guide with Examples

Java LinkedList

Discover how to harness Java’s LinkedList for efficient data manipulation, complete with practical code examples and best‑practice insights.

The LinkedList class in the Java Collections Framework implements a doubly‑linked list. Each element, or node, contains three fields:


Creating a Java LinkedList

Instantiate a LinkedList with a specific element type:

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

Examples:

// Integer list
LinkedList<Integer> numbers = new LinkedList<>();

// String list
LinkedList<String> words = new LinkedList<>();

Example: Create LinkedList in Java

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);
  }
}

Output

LinkedList: [Dog, Cat, Cow]

This code demonstrates a basic LinkedList named animals populated with three elements via add().


How a Java LinkedList Works

Unlike arrays, nodes are scattered in memory and linked together. The diagram below illustrates three nodes and their connections.

Java LinkedList: Comprehensive Guide with Examples

For deeper insight, see the Linked List article.


Key LinkedList Methods

Below are the most frequently used operations:


1. Adding Elements

Use add() to append a node, optionally specifying an index:

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);
  }
}

Output

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

The second add() inserts "Horse" at index 1, shifting subsequent elements.


2. Accessing Elements

Retrieve an item by index with get():

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);
  }
}

Output

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

Iteration can also be performed via iterator() or listIterator() for advanced traversal.


3. Updating Elements

Replace an element at a specific index using 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);
  }
}

Output

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

4. Removing Elements

Delete an element by index with 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);
  }
}

Output

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

Other Useful Methods

MethodDescription
contains()Checks if a value exists
indexOf()First occurrence index
lastIndexOf()Last occurrence index
clear()Removes all elements
iterator()Provides an Iterator

LinkedList as Queue and Deque

Because LinkedList implements Queue and Deque, it supports FIFO and LIFO operations. Common methods include:

MethodDescription
addFirst()Add at head
addLast()Add at tail
getFirst()Peek head
getLast()Peek tail
removeFirst()Pop head
removeLast()Pop tail
peek()View head without removal
poll()Retrieve & remove head
offer()Enqueue at tail

Example: LinkedList as 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);
  }
}

Output

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

Example: LinkedList as 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);
  }
}

Output

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

Iterating Through a LinkedList

The enhanced for‑loop offers a concise way to traverse elements:

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 + ", ");
    }
  }
}

Output

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

LinkedList vs. ArrayList

Both classes implement List, but differ in performance characteristics:

LinkedListArrayList
Implements List, Queue, DequeImplements List
Node stores prev, data, nextSingle element per array slot
Doubly‑linked structureResizable array
Insertions/ deletions are O(1) when position knownInsertions after an index require shifting O(n)
Random access requires traversal O(n)Direct index access O(1)

Note: You can instantiate a LinkedList via any of its interfaces:

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

When using an interface reference, only the methods defined by that interface are available.


Java

  1. Master Java Operators: Types, Syntax, & Practical Examples
  2. Java Comments: Types, Usage, and Best Practices
  3. Mastering Java's super Keyword: Advanced Usage & Practical Examples
  4. Mastering Java Interfaces: Concepts, Implementation, and Best Practices
  5. Mastering Java Try‑with‑Resources: Automatic Resource Management Explained
  6. Java Annotations Explained: Types, Placement, and Practical Examples
  7. Mastering Java ArrayList: Operations, Methods, and Best Practices
  8. Understanding Java Vector: Usage, Features, and Comparison with ArrayList
  9. Java LinkedList: Comprehensive Guide with Examples
  10. Java 8: A Comprehensive Quick Reference Guide