* {@link #push push(e)} |
@@ -140,35 +139,35 @@ import java.util.*; // for javadoc (till
* 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
* @author Josh Bloch
* @since 1.6
- * @param the type of elements held in this collection
+ * @param the type of elements held in this deque
*/
-
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 +183,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 +209,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 +227,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
@@ -260,17 +260,17 @@ 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();
@@ -297,53 +297,55 @@ 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
- * (o==null ? e==null : o.equals(e))
- * (if such an element exists).
- * Returns true if this deque contained the specified element
+ * More formally, removes the first element {@code e} such that
+ * {@code Objects.equals(o, e)} (if such an element exists).
+ * 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)
+ * is incompatible with this deque
+ * (optional)
* @throws NullPointerException if the specified element is null and this
- * deque does not permit null elements (optional)
+ * deque does not permit null elements
+ * (optional)
*/
boolean removeFirstOccurrence(Object o);
/**
* 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
- * (o==null ? e==null : o.equals(e))
- * (if such an element exists).
- * Returns true if this deque contained the specified element
+ * More formally, removes the last element {@code e} such that
+ * {@code Objects.equals(o, e)} (if such an element exists).
+ * 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)
+ * is incompatible with this deque
+ * (optional)
* @throws NullPointerException if the specified element is null and this
- * deque does not permit null elements (optional)
+ * deque does not permit null elements
+ * (optional)
*/
boolean removeLastOccurrence(Object o);
@@ -353,15 +355,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 specified by {@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
@@ -377,7 +379,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.
@@ -385,8 +387,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
@@ -412,11 +414,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();
@@ -437,12 +439,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();
@@ -452,9 +454,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}.
*
@@ -488,35 +489,37 @@ 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
- * (o==null ? e==null : o.equals(e))
- * (if such an element exists).
- * Returns true if this deque contained the specified element
+ * More formally, removes the first element {@code e} such that
+ * {@code Objects.equals(o, e)} (if such an element exists).
+ * 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)
+ * is incompatible with this deque
+ * (optional)
* @throws NullPointerException if the specified element is null and this
- * deque does not permit null elements (optional)
+ * deque does not permit null elements
+ * (optional)
*/
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
- * (o==null ? e==null : o.equals(e)).
+ * 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 {@code Objects.equals(o, e)}.
*
* @param o element whose presence in this deque is to be tested
- * @return true if this deque contains the specified element
- * @throws ClassCastException if the type of the specified element
- * is incompatible with this deque (optional)
+ * @return {@code true} if this deque contains the specified element
+ * @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
- * deque does not permit null elements (optional)
+ * deque does not permit null elements
+ * (optional)
*/
boolean contains(Object o);
@@ -525,7 +528,7 @@ public interface Deque extends Queue<
*
* @return the number of elements in this deque
*/
- public int size();
+ int size();
/**
* Returns an iterator over the elements in this deque in proper sequence.
@@ -534,4 +537,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();
+
}