</>

Technology

Java Programs

Difficulty

Intermediate

Interview Question

Write a Java program to demonstrate Stack and Queue operations.

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

OperationStack (LIFO)Queue (FIFO)
Add elementpush(e)offer(e)
Remove elementpop()poll()
View top/frontpeek()peek()
Check emptyisEmpty()isEmpty()
Throws on emptypop() throwspoll() 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

Follow AutomateQA