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
| ArrayList | LinkedList | |
|---|---|---|
| Internal | Dynamic array | Doubly linked list |
Random access get(i) | O(1) — fast | O(n) — slow |
| Add/remove at end | O(1) amortized | O(1) |
| Add/remove at middle | O(n) — shifts | O(1) after finding node |
| Memory | Less (no pointers) | More (stores prev+next) |
| Use when | Read-heavy | Insert/delete-heavy |
| Implements | List | List, Deque, Queue, Stack |
