0% completed
The ArrayDeque
class in Java is a resizable array implementation of the Deque interface. It provides a flexible, efficient way to manage elements at both ends of the collection.
ArrayDeque can be used as both a stack (LIFO) and a queue (FIFO), making it a versatile tool for various applications. Unlike some other collections, it does not have capacity restrictions (unless memory is exhausted) and offers constant-time performance for insertion and removal at both ends.
Deque
interface, meaning it supports all operations for double-ended queues.Collections.synchronizedDeque()
or other concurrent collections.push()
and pop()
) or as a queue (with offer()
and poll()
).ArrayDeque<Type> deque = new ArrayDeque<Type>();
ArrayDeque<Type>
declares a new ArrayDeque that stores objects of the specified Type
.deque.addFirst(element); // Inserts element at the front. deque.addLast(element); // Inserts element at the back.
addFirst()
adds an element at the beginning of the deque.addLast()
adds an element at the end of the deque.Type first = deque.removeFirst(); // Removes and returns the first element. Type last = deque.removeLast(); // Removes and returns the last element.
removeFirst()
removes and returns the front element.removeLast()
removes and returns the back element.In this example, we use ArrayDeque as a standard queue (FIFO). We add elements to the back and remove them from the front.
Example Explanation:
addLast()
.removeFirst()
method retrieves and removes the head element, demonstrating FIFO behavior.This example demonstrates using ArrayDeque as a stack (LIFO). Elements are added and removed from the front of the deque.
Example Explanation :
addFirst()
, emulating a push operation.removeFirst()
method removes the top element, acting like a pop operation.ArrayDeque is a versatile and efficient class for managing collections where elements can be added or removed from both ends. By mastering these basic operations, you can effectively use ArrayDeque in a wide range of applications, from task scheduling to implementing stack-based algorithms.
.....
.....
.....