Interface Deque<E>
- Type Parameters:
E- the type of elements in this collection
- All Superinterfaces:
Collection<E>, Iterable<E>, Queue<E>
- All Known Implementing Classes:
ArrayDeque, LinkedList
A kind of collection that can insert or remove element at both ends("double
ended queue"). Mostly a deque has no limit of its size.
Extending from Queue, a deque can be used as a Queue which behavior is
first-in-first-out. Furthermore, a deque can also be used as a Stack(legacy
class) which behavior is last-in-first-out.
A typical deque does not allow null to be inserted as its element, while some
implementations allow it. But null should not be inserted even in these
implementations, since method poll return null to indicate that there is no
element left in the deque.
A deque can also remove interior elements by removeFirstOccurrence and
removeLastOccurrence methods. A deque can not access elements by index.
- Since:
- 1.6
-
Method Summary
Modifier and TypeMethodDescriptionvoidInserts an element at the head of this deque if it dose not violate size limit immediately.voidInserts an element at the tail of this deque if it dose not violate size limit immediately.Returns the iterator in reverse order, from tail to head.getFirst()Gets but not removes the head element of this deque.getLast()Gets but not removes the tail element of this deque.booleanofferFirst(E e) Inserts an element at the head of this deque unless it would violate size limit.booleanInserts an element at the tail of this deque unless it would violate size limit.Gets but not removes the head element of this deque.peekLast()Gets but not removes the tail element of this deque.Gets and removes the head element of this deque.pollLast()Gets and removes the tail element of this deque.pop()Pops the head element of the deque, just same as removeFirst().voidPushes the element to the deque(at the head of the deque), just same as addFirst(E).Gets and removes the head element of this deque.booleanRemoves the first equivalent element of the specified object.Gets and removes the tail element of this deque.booleanRemoves the last equivalent element of the specified object.Methods inherited from interface Collection
add, addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, remove, removeAll, retainAll, size, toArray, toArrayModifier and TypeMethodDescriptionbooleanAttempts to addobjectto the contents of thisCollection(optional).booleanaddAll(Collection<? extends E> collection) Attempts to add all of the objects contained inCollectionto the contents of thisCollection(optional).voidclear()Removes all elements from thisCollection, leaving it empty (optional).booleanTests whether thisCollectioncontains the specified object.booleancontainsAll(Collection<?> collection) Tests whether thisCollectioncontains all objects contained in the specifiedCollection.booleanCompares the argument to the receiver, and returns true if they represent the same object using a class specific comparison.inthashCode()Returns an integer hash code for the receiver.booleanisEmpty()Returns if thisCollectioncontains no elements.iterator()Returns an instance ofIteratorthat may be used to access the objects contained by thisCollection.booleanRemoves one instance of the specified object from thisCollectionif one is contained (optional).booleanremoveAll(Collection<?> collection) Removes all occurrences in thisCollectionof each object in the specifiedCollection(optional).booleanretainAll(Collection<?> collection) Removes all objects from thisCollectionthat are not also found in theCollectionpassed (optional).intsize()Returns a count of how many objects thisCollectioncontains.Object[]toArray()Returns a new array containing all elements contained in thisCollection.<T> T[]toArray(T[] array) Returns an array containing all elements contained in thisCollection.Methods inherited from interface Queue
element, offer, peek, poll, removeModifier and TypeMethodDescriptionelement()Gets but does not remove the element at the head of the queue.booleanInserts the specified element into the queue provided that the condition allows such an operation.peek()Gets but does not remove the element at the head of the queue.poll()Gets and removes the element at the head of the queue, or returnsnullif there is no element in the queue.remove()Gets and removes the element at the head of the queue.
-
Method Details
-
addFirst
Inserts an element at the head of this deque if it dose not violate size limit immediately. It is better to use offerFirst(E) if a deque is size-limited.- Parameters:
e- the element- Throws:
IllegalStateException- if it can not add now due to size limitClassCastException- if the class of element can not be added into this dequeNullPointerException- if the element is null and the deque can not contain null elementIllegalArgumentException- if the element can not be added due to some property.
-
addLast
Inserts an element at the tail of this deque if it dose not violate size limit immediately. It is better to use offerLast(E) if a deque is size-limited.- Parameters:
e- the element- Throws:
IllegalStateException- if it can not add now due to size limitClassCastException- if the class of element can not be added into this dequeNullPointerException- if the element is null and the deque can not contain null elementIllegalArgumentException- if the element can not be added due to some property.
-
offerFirst
Inserts an element at the head of this deque unless it would violate size limit. It is better than the addFirst(E) method in a size-limited deque, because the latter one may fail to add the element only by throwing an exception.- Parameters:
e- the element- Returns:
- true if the operation succeeds or false if it fails.
- Throws:
ClassCastException- if the class of element can not be added into this dequeNullPointerException- if the element is null and the deque can not contain null elementIllegalArgumentException- if the element can not be added due to some property.
-
offerLast
Inserts an element at the tail of this deque unless it would violate size limit. It is better than the addLast(E) method in a size-limited deque, because the latter one may fail to add the element only by throwing an exception.- Parameters:
e- the element- Returns:
- true if the operation succeeds or false if it fails
- Throws:
ClassCastException- if the class of element can not be added into this dequeNullPointerException- if the element is null and the deque can not contain null elementIllegalArgumentException- if the element can not be added due to some property
-
removeFirst
E removeFirst()Gets and removes the head element of this deque. This method throws an exception if the deque is empty.- Returns:
- the head element
- Throws:
NoSuchElementException- if the deque is empty
-
removeLast
E removeLast()Gets and removes the tail element of this deque. This method throws an exception if the deque is empty.- Returns:
- the tail element
- Throws:
NoSuchElementException- if the deque is empty
-
pollFirst
E pollFirst()Gets and removes the head element of this deque. This method returns null if the deque is empty.- Returns:
- the head element or null if the deque is empty
-
pollLast
E pollLast()Gets and removes the tail element of this deque. This method returns null if the deque is empty.- Returns:
- the tail element or null if the deque is empty
-
getFirst
E getFirst()Gets but not removes the head element of this deque. This method throws an exception if the deque is empty.- Returns:
- the head element
- Throws:
NoSuchElementException- if the deque is empty
-
getLast
E getLast()Gets but not removes the tail element of this deque. This method throws an exception if the deque is empty.- Returns:
- the tail element
- Throws:
NoSuchElementException- if the deque is empty
-
peekFirst
E peekFirst()Gets but not removes the head element of this deque. This method returns null if the deque is empty.- Returns:
- the head element or null if the deque is empty
-
peekLast
E peekLast()Gets but not removes the tail element of this deque. This method returns null if the deque is empty.- Returns:
- the tail element or null if the deque is empty
-
removeFirstOccurrence
Removes the first equivalent element of the specified object. If the deque does not contain the element, it is unchanged and returns false.- Parameters:
o- the element to be removed- Returns:
- true if the operation succeeds or false if the deque does not contain the element.
- Throws:
ClassCastException- if the class of the element is incompatible with the dequeNullPointerException- if the element is null and the deque can not contain null element
-
removeLastOccurrence
Removes the last equivalent element of the specified object. If the deque does not contain the element, it is unchanged and returns false.- Parameters:
o- the element to be removed- Returns:
- true if the operation succeeds or false if the deque does not contain the element.
- Throws:
ClassCastException- if the class of the element is incompatible with the dequeNullPointerException- if the element is null and the deque can not contain null element
-
push
Pushes the element to the deque(at the head of the deque), just same as addFirst(E).- Parameters:
e- the element- Throws:
IllegalStateException- if it can not add now due to size limitClassCastException- if the class of element can not be added into this dequeNullPointerException- if the element is null and the deque can not contain null elementIllegalArgumentException- if the element can not be added due to some property.
-
pop
E pop()Pops the head element of the deque, just same as removeFirst().- Returns:
- the head element
- Throws:
NoSuchElementException- if the deque is empty
-
descendingIterator
-