Skip to main content

Command Palette

Search for a command to run...

Deque Interface in Java

Published
โ€ข3 min readโ€ขView as Markdown
Deque Interface in Java
K

๐Ÿ Passionate Python Enthusiast | Educator | Blogger ๐Ÿ“

Welcome to my Python playground! ๐Ÿš€ I'm here to share my love for Python programming and help you master this versatile language. Whether you're just starting your coding journey or looking to level up your Python skills, you're in the right place.

๐Ÿ“š Dive into my tutorials and learn Python from scratch, one step at a time. From basic syntax to complex projects, I've got you covered.

๐ŸŽ“ As an educator, I believe in the power of sharing knowledge. Let's learn, grow, and conquer coding challenges together.

๐Ÿ”— Got a question or a cool project idea? Don't hesitate to reach out.

Remember, in the world of programming, a little indentation goes a long way. Happy coding, Pythonistas! ๐Ÿ๐Ÿ’ป

๐ŸŒ karun.hashnode.dev ๐Ÿ“ธ https://twitter.com/karunakarhv

In Java, the Deque (pronounced "deck") interface is part of the Java Collections Framework and represents a double-ended queue. A deque is a linear collection that allows elements to be inserted and removed from both ends, making it suitable for a wide range of applications, including queues and stacks. The Deque interface extends the Queue interface and defines methods for adding, removing, and inspecting elements at both ends of the collection. Here's an overview of the Deque interface and some common implementations:

1. Deque Interface (java.util.Deque):

The Deque interface defines the following key methods:

  • Adding Elements:

    • addFirst(E element): Inserts an element at the beginning of the deque. Throws an exception if the operation fails.

    • addLast(E element): Inserts an element at the end of the deque. Throws an exception if the operation fails.

    • offerFirst(E element): Inserts an element at the beginning of the deque. Returns true if the operation was successful, false otherwise.

    • offerLast(E element): Inserts an element at the end of the deque. Returns true if the operation was successful, false otherwise.

  • Removing Elements:

    • removeFirst(): Removes and returns the element at the beginning of the deque. Throws an exception if the deque is empty.

    • removeLast(): Removes and returns the element at the end of the deque. Throws an exception if the deque is empty.

    • pollFirst(): Removes and returns the element at the beginning of the deque. Returns null if the deque is empty.

    • pollLast(): Removes and returns the element at the end of the deque. Returns null if the deque is empty.

  • Inspecting Elements:

    • getFirst(): Retrieves, but does not remove, the element at the beginning of the deque. Throws an exception if the deque is empty.

    • getLast(): Retrieves, but does not remove, the element at the end of the deque. Throws an exception if the deque is empty.

    • peekFirst(): Retrieves, but does not remove, the element at the beginning of the deque. Returns null if the deque is empty.

    • peekLast(): Retrieves, but does not remove, the element at the end of the deque. Returns null if the deque is empty.

  • Size and Empty Check:

    • size(): Returns the number of elements in the deque.

    • isEmpty(): Checks if the deque is empty.

  • Iterating and Traversing:

    • iterator(): Returns an iterator to traverse the elements in the deque.

Common Deque Implementations:

Java provides several implementations of the Deque interface to suit different use cases. Some common ones include:

1. ArrayDeque (java.util.ArrayDeque):

  • Implemented as a resizable array and can be used as a general-purpose deque.

  • Provides fast insertions and removals at both ends (front and back).

  • Suitable for a wide range of applications.

2. LinkedList (java.util.LinkedList):

  • Implements a doubly-linked list and can be used as a deque or a general-purpose list.

  • Supports efficient insertions and removals at both ends.

  • Can also function as a Queue or List depending on how elements are added and removed.

Example of Using ArrayDeque as a Deque:

Here's an example of using ArrayDeque as a deque:

import java.util.ArrayDeque;
import java.util.Deque;

public class DequeExample {
    public static void main(String[] args) {
        // Create a deque of integers
        Deque<Integer> deque = new ArrayDeque<>();

        // Add elements to the front and back
        deque.addFirst(1);
        deque.addLast(2);
        deque.offerFirst(0);

        // Remove elements from the front and back
        int first = deque.pollFirst(); // 0
        int last = deque.removeLast(); // 2

        // Peek at elements at the front and back
        int frontElement = deque.peekFirst(); // 1
        int backElement = deque.getLast(); // 1

        // Iterate through the deque
        for (int num : deque) {
            System.out.println(num);
        }
    }
}

The Deque interface and its implementations are versatile and can be used for various data structures, including queues, stacks, and double-ended queues. Depending on your specific requirements, you can choose the appropriate implementation for your application.

More from this blog

Karun's Blog

104 posts

A software engineer fluent in Python and Linux, I thrive in development. Beyond tech, I'm a fitness enthusiast and enjoying the journey of parenting.