Answer
Stack and Queue in Java
Stack — LIFO (Last In First Out)
Java
import java.util.Stack;
public class StackDemo {
public static void main(String[] args) {
Stack<String> stack = new Stack<>();
// push — add to top
stack.push("LoginPage");
stack.push("ProductPage");
stack.push("CartPage");
stack.push("CheckoutPage");
System.out.println("Stack: " + stack);
System.out.println("Top (peek): " + stack.peek()); // view without removing
System.out.println("Size: " + stack.size());
// pop — remove from top (LIFO)
System.out.println("\nPopping in LIFO order:");
while (!stack.isEmpty()) {
System.out.println("Popped: " + stack.pop());
}
}
}
Output
CODE
Stack: [LoginPage, ProductPage, CartPage, CheckoutPage]
Top (peek): CheckoutPage
Size: 4
Popping in LIFO order:
Popped: CheckoutPage
Popped: CartPage
Popped: ProductPage
Popped: LoginPage
Queue — FIFO (First In First Out)
Java
import java.util.LinkedList;
import java.util.Queue;
public class QueueDemo {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<>();
// offer — add to tail
queue.offer("Test1-Login");
queue.offer("Test2-Search");
queue.offer("Test3-Checkout");
queue.offer("Test4-Logout");
System.out.println("Queue: " + queue);
System.out.println("Front (peek): " + queue.peek()); // view without removing
System.out.println("Size: " + queue.size());
// poll — remove from head (FIFO)
System.out.println("\nProcessing in FIFO order:");
while (!queue.isEmpty()) {
System.out.println("Processing: " + queue.poll());
}
}
}
Output
CODE
Queue: [Test1-Login, Test2-Search, Test3-Checkout, Test4-Logout]
Front (peek): Test1-Login
Size: 4
Processing in FIFO order:
Processing: Test1-Login
Processing: Test2-Search
Processing: Test3-Checkout
Processing: Test4-Logout
ArrayDeque (Preferred over Stack and LinkedList)
Java
import java.util.ArrayDeque;
import java.util.Deque;
Deque<String> deque = new ArrayDeque<>();
// Use as Stack
deque.push("A"); deque.push("B"); deque.push("C");
System.out.println("Pop: " + deque.pop()); // C (LIFO)
// Use as Queue
deque.offer("X"); deque.offer("Y");
System.out.println("Poll: " + deque.poll()); // A (FIFO — next in line)
Stack Methods vs Queue Methods
| Operation | Stack (LIFO) | Queue (FIFO) |
|---|---|---|
| Add element | push(e) | offer(e) |
| Remove element | pop() | poll() |
| View top/front | peek() | peek() |
| Check empty | isEmpty() | isEmpty() |
| Throws on empty | pop() throws | poll() returns null |
Automation Testing Relevance
Java
// Track browser navigation history using Stack
Stack<String> pageHistory = new Stack<>();
pageHistory.push(driver.getCurrentUrl());
// Navigate forward
driver.get("https://example.com/products");
pageHistory.push(driver.getCurrentUrl());
// Go back to previous page
pageHistory.pop(); // remove current
driver.get(pageHistory.peek()); // navigate to previous
