* {@link #push push(e)} |
@@ -140,21 +142,21 @@ import java.util.*; // for javadoc
* Unlike the {@link List} interface, this interface does not
* provide support for indexed access to elements.
*
- *
While Deque implementations are not strictly required
+ *
While {@code Deque} implementations are not strictly required
* to prohibit the insertion of null elements, they are strongly
- * encouraged to do so. Users of any Deque implementations
+ * encouraged to do so. Users of any {@code Deque} implementations
* that do allow null elements are strongly encouraged not to
* take advantage of the ability to insert nulls. This is so because
- * null is used as a special return value by various methods
+ * {@code null} is used as a special return value by various methods
* to indicated that the deque is empty.
*
- *
Deque implementations generally do not define
- * element-based versions of the equals and hashCode
+ *
{@code Deque} implementations generally do not define
+ * element-based versions of the {@code equals} and {@code hashCode}
* methods, but instead inherit the identity-based versions from class
- * Object.
+ * {@code Object}.
*
*
This interface is a member of the Java Collections
+ * href="{@docRoot}/../technotes/guides/collections/index.html"> Java Collections
* Framework.
*
* @author Doug Lea
@@ -162,13 +164,13 @@ import java.util.*; // for javadoc
* @since 1.6
* @param the type of elements held in this collection
*/
-
public interface Deque extends Queue {
/**
* Inserts the specified element at the front of this deque if it is
- * possible to do so immediately without violating capacity restrictions.
- * When using a capacity-restricted deque, it is generally preferable to
- * use method {@link #offerFirst}.
+ * possible to do so immediately without violating capacity restrictions,
+ * throwing an {@code IllegalStateException} if no space is currently
+ * available. When using a capacity-restricted deque, it is generally
+ * preferable to use method {@link #offerFirst}.
*
* @param e the element to add
* @throws IllegalStateException if the element cannot be added at this
@@ -184,9 +186,10 @@ public interface Deque extends Queue<
/**
* Inserts the specified element at the end of this deque if it is
- * possible to do so immediately without violating capacity restrictions.
- * When using a capacity-restricted deque, it is generally preferable to
- * use method {@link #offerLast}.
+ * possible to do so immediately without violating capacity restrictions,
+ * throwing an {@code IllegalStateException} if no space is currently
+ * available. When using a capacity-restricted deque, it is generally
+ * preferable to use method {@link #offerLast}.
*
* This method is equivalent to {@link #add}.
*
@@ -209,8 +212,8 @@ public interface Deque extends Queue<
* which can fail to insert an element only by throwing an exception.
*
* @param e the element to add
- * @return true if the element was added to this deque, else
- * false
+ * @return {@code true} if the element was added to this deque, else
+ * {@code false}
* @throws ClassCastException if the class of the specified element
* prevents it from being added to this deque
* @throws NullPointerException if the specified element is null and this
@@ -227,8 +230,8 @@ public interface Deque extends Queue<
* which can fail to insert an element only by throwing an exception.
*
* @param e the element to add
- * @return true if the element was added to this deque, else
- * false
+ * @return {@code true} if the element was added to this deque, else
+ * {@code false}
* @throws ClassCastException if the class of the specified element
* prevents it from being added to this deque
* @throws NullPointerException if the specified element is null and this
@@ -240,8 +243,8 @@ public interface Deque extends Queue<
/**
* Retrieves and removes the first element of this deque. This method
- * differs from {@link #pollFirst} only in that it throws an exception
- * if this deque is empty.
+ * differs from {@link #pollFirst pollFirst} only in that it throws an
+ * exception if this deque is empty.
*
* @return the head of this deque
* @throws NoSuchElementException if this deque is empty
@@ -250,8 +253,8 @@ public interface Deque extends Queue<
/**
* Retrieves and removes the last element of this deque. This method
- * differs from {@link #pollLast} only in that it throws an exception if
- * this deque is empty.
+ * differs from {@link #pollLast pollLast} only in that it throws an
+ * exception if this deque is empty.
*
* @return the tail of this deque
* @throws NoSuchElementException if this deque is empty
@@ -260,24 +263,25 @@ public interface Deque extends Queue<
/**
* Retrieves and removes the first element of this deque,
- * or returns null if this deque is empty.
+ * or returns {@code null} if this deque is empty.
*
- * @return the head of this deque, or null if this deque is empty
+ * @return the head of this deque, or {@code null} if this deque is empty
*/
E pollFirst();
/**
* Retrieves and removes the last element of this deque,
- * or returns null if this deque is empty.
+ * or returns {@code null} if this deque is empty.
*
- * @return the tail of this deque, or null if this deque is empty
+ * @return the tail of this deque, or {@code null} if this deque is empty
*/
E pollLast();
/**
* Retrieves, but does not remove, the first element of this deque.
- * This method differs from {@link #peekFirst} only in that it throws an
- * exception if this deque is empty.
+ *
+ * This method differs from {@link #peekFirst peekFirst} only in that it
+ * throws an exception if this deque is empty.
*
* @return the head of this deque
* @throws NoSuchElementException if this deque is empty
@@ -286,8 +290,8 @@ public interface Deque extends Queue<
/**
* Retrieves, but does not remove, the last element of this deque.
- * This method differs from {@link #peekLast} only in that it throws an
- * exception if this deque is empty.
+ * This method differs from {@link #peekLast peekLast} only in that it
+ * throws an exception if this deque is empty.
*
* @return the tail of this deque
* @throws NoSuchElementException if this deque is empty
@@ -296,31 +300,31 @@ public interface Deque extends Queue<
/**
* Retrieves, but does not remove, the first element of this deque,
- * or returns null if this deque is empty.
+ * or returns {@code null} if this deque is empty.
*
- * @return the head of this deque, or null if this deque is empty
+ * @return the head of this deque, or {@code null} if this deque is empty
*/
E peekFirst();
/**
* Retrieves, but does not remove, the last element of this deque,
- * or returns null if this deque is empty.
+ * or returns {@code null} if this deque is empty.
*
- * @return the tail of this deque, or null if this deque is empty
+ * @return the tail of this deque, or {@code null} if this deque is empty
*/
E peekLast();
/**
* Removes the first occurrence of the specified element from this deque.
* If the deque does not contain the element, it is unchanged.
- * More formally, removes the first element e such that
+ * More formally, removes the first element {@code e} such that
* (o==null ? e==null : o.equals(e))
* (if such an element exists).
- * Returns true if this deque contained the specified element
+ * Returns {@code true} if this deque contained the specified element
* (or equivalently, if this deque changed as a result of the call).
*
* @param o element to be removed from this deque, if present
- * @return true if an element was removed as a result of this call
+ * @return {@code true} if an element was removed as a result of this call
* @throws ClassCastException if the class of the specified element
* is incompatible with this deque (optional)
* @throws NullPointerException if the specified element is null and this
@@ -331,14 +335,14 @@ public interface Deque extends Queue<
/**
* Removes the last occurrence of the specified element from this deque.
* If the deque does not contain the element, it is unchanged.
- * More formally, removes the last element e such that
+ * More formally, removes the last element {@code e} such that
* (o==null ? e==null : o.equals(e))
* (if such an element exists).
- * Returns true if this deque contained the specified element
+ * Returns {@code true} if this deque contained the specified element
* (or equivalently, if this deque changed as a result of the call).
*
* @param o element to be removed from this deque, if present
- * @return true if an element was removed as a result of this call
+ * @return {@code true} if an element was removed as a result of this call
* @throws ClassCastException if the class of the specified element
* is incompatible with this deque (optional)
* @throws NullPointerException if the specified element is null and this
@@ -352,15 +356,15 @@ public interface Deque extends Queue<
* Inserts the specified element into the queue represented by this deque
* (in other words, at the tail of this deque) if it is possible to do so
* immediately without violating capacity restrictions, returning
- * true upon success and throwing an
- * IllegalStateException if no space is currently available.
+ * {@code true} upon success and throwing an
+ * {@code IllegalStateException} if no space is currently available.
* When using a capacity-restricted deque, it is generally preferable to
* use {@link #offer(Object) offer}.
*
* This method is equivalent to {@link #addLast}.
*
* @param e the element to add
- * @return true (as per the spec for {@link Collection#add})
+ * @return {@code true} (as specified by {@link Collection#add})
* @throws IllegalStateException if the element cannot be added at this
* time due to capacity restrictions
* @throws ClassCastException if the class of the specified element
@@ -376,7 +380,7 @@ public interface Deque extends Queue<
* Inserts the specified element into the queue represented by this deque
* (in other words, at the tail of this deque) if it is possible to do so
* immediately without violating capacity restrictions, returning
- * true upon success and false if no space is currently
+ * {@code true} upon success and {@code false} if no space is currently
* available. When using a capacity-restricted deque, this method is
* generally preferable to the {@link #add} method, which can fail to
* insert an element only by throwing an exception.
@@ -384,8 +388,8 @@ public interface Deque extends Queue<
* This method is equivalent to {@link #offerLast}.
*
* @param e the element to add
- * @return true if the element was added to this deque, else
- * false
+ * @return {@code true} if the element was added to this deque, else
+ * {@code false}
* @throws ClassCastException if the class of the specified element
* prevents it from being added to this deque
* @throws NullPointerException if the specified element is null and this
@@ -398,7 +402,7 @@ public interface Deque extends Queue<
/**
* Retrieves and removes the head of the queue represented by this deque
* (in other words, the first element of this deque).
- * This method differs from {@link #poll} only in that it throws an
+ * This method differs from {@link #poll poll} only in that it throws an
* exception if this deque is empty.
*
* This method is equivalent to {@link #removeFirst()}.
@@ -411,11 +415,11 @@ public interface Deque extends Queue<
/**
* 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.
+ * {@code null} if this deque is empty.
*
* This method is equivalent to {@link #pollFirst()}.
*
- * @return the first element of this deque, or null if
+ * @return the first element of this deque, or {@code null} if
* this deque is empty
*/
E poll();
@@ -423,7 +427,7 @@ public interface Deque extends Queue<
/**
* Retrieves, but does not remove, the head of the queue represented by
* this deque (in other words, the first element of this deque).
- * This method differs from {@link #peek} only in that it throws an
+ * This method differs from {@link #peek peek} only in that it throws an
* exception if this deque is empty.
*
* This method is equivalent to {@link #getFirst()}.
@@ -436,12 +440,12 @@ public interface Deque extends Queue<
/**
* Retrieves, but does not remove, 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.
+ * returns {@code null} if this deque is empty.
*
* This method is equivalent to {@link #peekFirst()}.
*
* @return the head of the queue represented by this deque, or
- * null if this deque is empty
+ * {@code null} if this deque is empty
*/
E peek();
@@ -451,9 +455,8 @@ public interface Deque extends Queue<
/**
* Pushes an element onto the stack represented by this deque (in other
* words, at the head of this deque) if it is possible to do so
- * immediately without violating capacity restrictions, returning
- * true upon success and throwing an
- * IllegalStateException if no space is currently available.
+ * immediately without violating capacity restrictions, throwing an
+ * {@code IllegalStateException} if no space is currently available.
*
* This method is equivalent to {@link #addFirst}.
*
@@ -487,16 +490,16 @@ public interface Deque extends Queue<
/**
* Removes the first occurrence of the specified element from this deque.
* If the deque does not contain the element, it is unchanged.
- * More formally, removes the first element e such that
+ * More formally, removes the first element {@code e} such that
* (o==null ? e==null : o.equals(e))
* (if such an element exists).
- * Returns true if this deque contained the specified element
+ * Returns {@code true} if this deque contained the specified element
* (or equivalently, if this deque changed as a result of the call).
*
- * This method is equivalent to {@link #removeFirstOccurrence}.
+ *
This method is equivalent to {@link #removeFirstOccurrence(Object)}.
*
* @param o element to be removed from this deque, if present
- * @return true if an element was removed as a result of this call
+ * @return {@code true} if an element was removed as a result of this call
* @throws ClassCastException if the class of the specified element
* is incompatible with this deque (optional)
* @throws NullPointerException if the specified element is null and this
@@ -505,13 +508,13 @@ public interface Deque extends Queue<
boolean remove(Object o);
/**
- * Returns true if this deque contains the specified element.
- * More formally, returns true if and only if this deque contains
- * at least one element e such that
+ * Returns {@code true} if this deque contains the specified element.
+ * More formally, returns {@code true} if and only if this deque contains
+ * at least one element {@code e} such that
* (o==null ? e==null : o.equals(e)).
*
* @param o element whose presence in this deque is to be tested
- * @return true if this deque contains the specified element
+ * @return {@code true} if this deque contains the specified element
* @throws ClassCastException if the type of the specified element
* is incompatible with this deque (optional)
* @throws NullPointerException if the specified element is null and this
@@ -533,4 +536,15 @@ public interface Deque extends Queue<
* @return an iterator over the elements in this deque in proper sequence
*/
Iterator iterator();
+
+ /**
+ * Returns an iterator over the elements in this deque in reverse
+ * sequential order. The elements will be returned in order from
+ * last (tail) to first (head).
+ *
+ * @return an iterator over the elements in this deque in reverse
+ * sequence
+ */
+ Iterator descendingIterator();
+
}