Open In App

LinkedList in Java

Last Updated : 14 Aug, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

LinkedList is a part of the Java Collection Framework and is present in the java.util package. It implements a doubly-linked list data structure where elements (called nodes) are not stored in contiguous memory. Each node contains two parts: data and a reference to the next (and previous) node.

Example: Java program to add elements to a LinkedList.

Java
import java.util.LinkedList;

public class Geeks {

    // Main driver method
    public static void main(String[] args) {
        // Creating a LinkedList
        LinkedList<String> l = new LinkedList<String>();

        // Adding elements to the LinkedList using add() method
        l.add("One");
        l.add("Two");
        l.add("Three");
        l.add("Four");
        l.add("Five");

        System.out.println(l);
    }
}

Output
[One, Two, Three, Four, Five]

Note: Nodes in a LinkedList cannot be accessed directly by index like arrays. To access an element, traversal must begin from the head node and continue until the desired position is reached.

Constructors of LinkedList

In order to create a LinkedList, we need to create an object of the LinkedList class. The LinkedList class consists of various constructors that allow the possible creation of the list. The following are the constructors available in this class:
 

1. LinkedList(): This constructor is used to create an empty linked list. If we wish to create an empty LinkedList with the name list, then it can be created as: 

LinkedList list = new LinkedList();  

2. LinkedList(Collection C): This constructor is used to create an ordered list that contains all the elements of a specified collection, as returned by the collection's iterator. If we wish to create a LinkedList with the name list, then, it can be created as: 

LinkedList list = new LinkedList(C);

Performing Different Operations on LinkedList

1. Adding Elements: With the help of the add() method, we can add elements to a LinkedList This method can perform multiple operations based on different parameters. They are:  

  • add(Object): This method is used to add an element at the end of the LinkedList.
  • add(int index, Object): This method is used to add an element at a specific index in the LinkedList.

Example: Java program to add elements to a LinkedList

Java
import java.util.*;

public class Geeks {

    public static void main(String args[])
    {
        LinkedList<String> ll = new LinkedList<>();

        ll.add("Geeks");
        ll.add("Geeks");
        ll.add(1, "For");

        System.out.println(ll);
    }
}

Output
[Geeks, For, Geeks]

2. Changing Elements: With the help of the set() method, we can update an element in a LinkedList. This method takes an index and the updated element which needs to be inserted at that index.

Example: Java program to change elements in a LinkedList

Java
import java.util.*;

public class Geeks {

    public static void main(String args[])
    {
        LinkedList<String> 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);
    }
}

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

3. Removing Elements: Removes the first occurrence of the specified element from the list, if it exists. They are: 

  • remove(Object): This method is used to remove an object from the LinkedList. If there are multiple objects, then the first occurrence of the object is removed.
  • remove(int index): This method removes the element at the specific index in the LinkedList. After removing, the list updates so the elements shift and the LinkedList reflects the change.

Example: Java program to remove elements in a LinkedList

Java
import java.util.*;

public class Geeks {

    public static void main(String args[])
    {
        LinkedList<String> 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);
    }
}

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

4. Iterating a LinkedList: There are multiple ways to iterate through LinkedList. The most famous ways are by using the basic for loop in combination with a get() method to get the element at a specific index and the advanced for-loop.

Example: Java program to iterate the elements in an LinkedList

Java
import java.util.*; 
  
public class Geeks { 
  
    public static void main(String args[]) 
    { 
        LinkedList<String> 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 < ll.size(); i++) { 
  
            System.out.print(ll.get(i) + " "); 
        } 
  
        System.out.println(); 
  
        // Using the for each loop 
        for (String str : ll) 
            System.out.print(str + " "); 
    } 
} 

Output
Geeks For Geeks 
Geeks For Geeks 

5. Linked list to Array by using toArray(): It converts the elements of the linked list into a new array.

Example:

Java
import java.util.*;
public class Geeks {
    public static void main(String[] args)
    {
        LinkedList<Integer> list= new LinkedList<Integer>();
        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+" ");
    }
}

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

6. size(): This method returns the total number of elements in the linked list.

Example:

Java
import java.io.*;
import java.util.LinkedList;

public class Geeks {
    
    public static void main(String args[]) {
        
        LinkedList<String> list = new LinkedList<String>();
        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());
    }
}

Output
The size of the linked list is: 2

Advantages

  • A linked list can dynamically grow or shrink in size as needed.
  • Adding or removing elements in the middle is efficient since only links need to be updated.
  • Doubly linked lists allow traversal in both forward and backward directions.

Disadvantages

  • Access time is slower since elements must be accessed sequentially from the head.
  • Each node stores extra memory for pointers, leading to higher memory usage.

Methods for Java LinkedList

MethodDescription
add(int index, E element)Inserts element at given index.
add(E e)This method Appends the specified element to the end of this list.
addAll(int index, Collection<E> c)Inserts all elements of collection starting at index.
addAll(Collection<E> c)Appends all elements of collection to end
addFirst(E e)This method Inserts the specified element at the beginning of this list.
addLast(E e)This method Appends the specified element to the end of this list.
clear()This method removes all of the elements from this list.
clone()This method returns a shallow copy of this LinkedList.
contains(Object o)This method returns true if this list contains the specified element.
descendingIterator()This method returns an iterator over the elements in this deque in reverse sequential order.
element()This method retrieves but does not remove, the head (first element) of this list.
get(int index)This method returns the element at the specified position in this list.
getFirst()This method returns the first element in this list.
getLast()This method returns the last element in this list.
indexOf(Object o)Return first index of element or -1 if element is not present
lastIndexOf(Object o)Return Last index of element or -1 if element is not present
listIterator(int index)This method returns a list-iterator of the elements.
offer(E e)This method Adds the specified element as the tail (last element) of this list.
offerFirst(E e)This method Inserts the specified element at the front of this list.
offerLast(E e)This method Inserts the specified element at the end of this list.
peek()This method retrieves but does not remove, the head (first element) of this list.
peekFirst()This method retrieves, but does not remove, the first element of this list or returns null if this list is empty.
peekLast()This method retrieves, but does not remove, the last element of this list or returns null if this list is empty.
poll()This method retrieves and removes the head (first element) of this list.
pollFirst()This method retrieves and removes the first element of this list or returns null if this list is empty.
pollLast()This method retrieves and removes the last element of this list or returns null if this list is empty.
pop()This method Pops an element from the stack represented by this list.
push(E e)This method pushes an element onto the stack represented by this list.
remove()This method retrieves and removes the head (first element) of this list.
remove(int index)This method removes the element at the specified position in this list.
remove(Object o)This method removes the first occurrence of the specified element from this list if it is present.
removeFirst()This method removes and returns the first element from this list.
removeFirstOccurrence(Object o)This method removes the first occurrence of the specified element in this list.
removeLast()This method removes and returns the last element from this list.
removeLastOccurrence(Object o)This method removes the last occurrence of the specified element in this list.
set(int index, E element)This method replaces the element at the specified position in this list with the specified element.
size()This method returns the number of elements in this list.
spliterator()This method creates a late-binding and fail-fast Spliterator over the elements in this list.
toArray()This method returns an array containing all of the elements in this list in proper sequence.
toArray(T[] a)Returns array of all elements in given type.
toString()This method returns string representation of list.

ArrayList vs LinkedList

ArrayList

LinkedList

Underlying structure is Dynamic Array

Underlying structure is Doubly-linked list

O(1) - Fast random access

O(n) - Slow random access

Memory is lower (contiguous memory)

Memory is higher (extra pointers per node)

Iteration speed is faster

Iteration speed is slower.

Insertion and deletion is slower

Insertion and deletion is faster.


LinkedList in Java
Visit Course explore course icon

Similar Reads