</>

Technology

Java Programs

Difficulty

Intermediate

Interview Question

Write a Java program to demonstrate LinkedList operations and compare with ArrayList.

Answer

LinkedList in Java

Java
import java.util.LinkedList;

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

        // Add elements
        list.add("Selenium");       // adds to tail
        list.add("TestNG");
        list.add("Cucumber");
        list.addFirst("Maven");     // adds to head
        list.addLast("Jenkins");    // adds to tail

        System.out.println("List: " + list);
        System.out.println("Size: " + list.size());

        // Access elements
        System.out.println("First: " + list.getFirst());  // Maven
        System.out.println("Last:  " + list.getLast());   // Jenkins
        System.out.println("Index 2: " + list.get(2));    // Selenium

        // Remove elements
        list.removeFirst();             // remove Maven
        list.removeLast();              // remove Jenkins
        list.remove("Cucumber");        // remove by value
        System.out.println("After remove: " + list);

        // Peek (view without removing)
        System.out.println("Peek first: " + list.peekFirst());
        System.out.println("Peek last:  " + list.peekLast());

        // Iterate
        System.out.println("\nIterating:");
        for (String tool : list) {
            System.out.println(tool);
        }
    }
}

Output

CODE
List: [Maven, Selenium, TestNG, Cucumber, Jenkins]
Size: 5
First: Maven
Last:  Jenkins
Index 2: TestNG
After remove: [Selenium, TestNG]
Peek first: Selenium
Peek last:  TestNG

Iterating:
Selenium
TestNG

LinkedList as Stack (LIFO)

Java
LinkedList<String> stack = new LinkedList<>();

stack.push("Page1");    // push to top (addFirst)
stack.push("Page2");
stack.push("Page3");

System.out.println("Stack: " + stack);     // [Page3, Page2, Page1]
System.out.println("Pop:   " + stack.pop());  // removes Page3
System.out.println("Peek:  " + stack.peek()); // views Page2 without removing
System.out.println("Stack: " + stack);     // [Page2, Page1]

LinkedList as Queue (FIFO)

Java
LinkedList<String> queue = new LinkedList<>();

queue.offer("Test1");   // add to tail
queue.offer("Test2");
queue.offer("Test3");

System.out.println("Queue: " + queue);      // [Test1, Test2, Test3]
System.out.println("Poll:  " + queue.poll()); // removes Test1 (head)
System.out.println("Peek:  " + queue.peek()); // views Test2
System.out.println("Queue: " + queue);      // [Test2, Test3]

ArrayList vs LinkedList

ArrayListLinkedList
InternalDynamic arrayDoubly linked list
Random access get(i)O(1) — fastO(n) — slow
Add/remove at endO(1) amortizedO(1)
Add/remove at middleO(n) — shiftsO(1) after finding node
MemoryLess (no pointers)More (stores prev+next)
Use whenRead-heavyInsert/delete-heavy
ImplementsListList, Deque, Queue, Stack

Follow AutomateQA