Overview of the Queue Interface in Java

Overview

In computer science, Queue is a first in first out (FIFO) data structure. That means elements are added at the end of a queue and removed from the beginning.

The Queue interface in Java provides methods to add and remove elements. Details as below:

MethodFunction
offer(element)Insert element to the queue
poll()Get and remove an element at the head of the queue, returns null if the queue is empty
remove()Same as poll but throws an exception if the queue is empty
peek()Get but not remove an element from the beginning of the queue. Returns null if the queue list is empty
element()Same as peek() but will throw an exception if the queue is empty
Methods offered by the Queue interface in Java

In short, the Queue interface has only one method to add elements but 2 sets of methods to get elements out of it.

Here is the diagram of the Queue interface in Java:

The java Queue interface family tree
The java Queue interface family tree

Queue in Action

Let’s consider the following code to understand Java’s Queue’s operation

package com.datmt.java_core.collection.queue;

import java.util.LinkedList;
import java.util.NoSuchElementException;
import java.util.Queue;

public class QueueOperation {
    public static void main(String[] args) {
        Queue<String> people = new LinkedList<>();
        Queue<String> emptyQueue = new LinkedList<>();

        //1. Adding elements to queue
        people.offer("Anna");
        people.add("Bob");

       //2. Get element from queue, not removing
        System.out.println(people.peek());
        System.out.println(people.element());

        System.out.printf("Now the queue contains %s people",  people.size());
        System.out.println();

        //3. Get element and also remove
        System.out.println(people.remove());
        System.out.println(people.poll());


        System.out.printf("Now the queue contains %s people",  people.size());

        //4. Get element from an empty queue
        System.out.println("the following method are safe on empty queue");
        System.out.println(emptyQueue.poll());
        System.out.println(emptyQueue.peek());


        System.out.println("the following method calls would throw exceptions");

        try {
            System.out.println(emptyQueue.remove());
        } catch (NoSuchElementException ex) {
            System.out.println("element does not exist");
        }

        try {
            System.out.println(emptyQueue.element());
        } catch (NoSuchElementException ex) {
            System.out.println("element does not exist");
        }
    }
}

This is the output as you may expect:

Running Queue code example output

Conclusion

As you can see, the Queue interface offers some convenient methods to deal with queues. However, there are a lot of features offered by Java regarding working with queues. We will discover such features in the next posts.

Leave a Comment