Amazing ArrayDeque

1. ArrayDeque

1.1. Overview

Resizable-array implementation of the Deque interface. Array deques have no capacity restrictions; they grow as necessary to support usage. They are not thread-safe; in the absence of external synchronization, they do not support concurrent access by multiple threads. Null elements are prohibited. This class is likely to be faster than Stack when used as a stack, and faster than LinkedList when used as a queue.

Most ArrayDeque operations run in amortized constant time. Exceptions include removeremoveFirstOccurrenceremoveLastOccurrencecontainsiterator.remove(), and the bulk operations, all of which run in linear time.

1.2. Method Summary

Methods 
Modifier and Type Method and Description
boolean add(E e)

Inserts the specified element at the end of this deque.
void addFirst(E e)

Inserts the specified element at the front of this deque.
void addLast(E e)

Inserts the specified element at the end of this deque.
void clear()

Removes all of the elements from this deque.
ArrayDeque<E> clone()

Returns a copy of this deque.
boolean contains(Object o)

Returns true if this deque contains the specified element.
Iterator<E> descendingIterator()

Returns an iterator over the elements in this deque in reverse sequential order.
E element()

Retrieves, but does not remove, the head of the queue represented by this deque.
E getFirst()

Retrieves, but does not remove, the first element of this deque.
E getLast()

Retrieves, but does not remove, the last element of this deque.
boolean isEmpty()

Returns true if this deque contains no elements.
Iterator<E> iterator()

Returns an iterator over the elements in this deque.
boolean offer(E e)

Inserts the specified element at the end of this deque.
boolean offerFirst(E e)

Inserts the specified element at the front of this deque.
boolean offerLast(E e)

Inserts the specified element at the end of this deque.
E peek()

Retrieves, but does not remove, the head of the queue represented by this deque, or returns null if this deque is empty.
E peekFirst()

Retrieves, but does not remove, the first element of this deque, or returns null if this deque is empty.
E peekLast()

Retrieves, but does not remove, the last element of this deque, or returns null if this deque is empty.
E poll()

Retrieves and removes the head of the queue represented by this deque (in other words, the first element of this deque), or returns null if this deque is empty.
E pollFirst()

Retrieves and removes the first element of this deque, or returns null if this deque is empty.
E pollLast()

Retrieves and removes the last element of this deque, or returns null if this deque is empty.
E pop()

Pops an element from the stack represented by this deque.
void push(E e)

Pushes an element onto the stack represented by this deque.
E remove()

Retrieves and removes the head of the queue represented by this deque.
boolean remove(Object o)

Removes a single instance of the specified element from this deque.
E removeFirst()

Retrieves and removes the first element of this deque.
boolean removeFirstOccurrence(Object o)

Removes the first occurrence of the specified element in this deque (when traversing the deque from head to tail).
E removeLast()

Retrieves and removes the last element of this deque.
boolean removeLastOccurrence(Object o)

Removes the last occurrence of the specified element in this deque (when traversing the deque from head to tail).
int size()

Returns the number of elements in this deque.
Object[] toArray()

Returns an array containing all of the elements in this deque in proper sequence (from first to last element).
 T[] toArray(T[] a)

Returns an array containing all of the elements in this deque in proper sequence (from first to last element); the runtime type of the returned array is that of the specified array.

2. ArrayDeque in Java

2.1. Methods Test

Link to my code

3. Conclusion

Just Remember where the ‘front’, ‘end’, ‘first’, and ‘last’ are and then use them
accordingly. The smart deque would do the work easily.

There are so many methods for the ArrayDeque…and many of those are
basically the same with the different returning values. Therefore, we can unify the linear data structure by just using the deque.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s