--- jsr166/src/main/java/util/Queue.java 2004/11/21 01:40:39 1.23
+++ jsr166/src/main/java/util/Queue.java 2005/07/18 01:04:11 1.32
@@ -8,32 +8,39 @@ package java.util;
/**
* A collection designed for holding elements prior to processing.
- * Besides basic {@link java.util.Collection Collection} operations, queues provide
- * additional insertion, extraction, and inspection operations. The names
- * of the operations vary with their policies:
+ * Besides basic {@link java.util.Collection Collection} operations,
+ * queues provide additional insertion, extraction, and inspection
+ * operations. Each of these methods exists in two forms: one throws
+ * an exception if the operation fails, the other returns a special
+ * value (either null or false, depending on the
+ * operation). The latter form of the insert operation is designed
+ * specifically for use with capacity-restricted Queue
+ * implementations; in most implementations, insert operations cannot
+ * fail.
*
- *
+ *
+ *
*
- * Operation |
- * Attempt |
- * Throw |
+ * |
+ * Throws exception |
+ * Returns special value |
*
*
- * insert |
- * offer(x) |
- * add(x) |
+ * Insert |
+ * {@link #add add(e)} |
+ * {@link #offer offer(e)} |
*
*
- * extract |
- * poll() |
- * remove() |
+ * Remove |
+ * {@link #remove remove()} |
+ * {@link #poll poll()} |
*
*
- * inspect |
- * peek() |
- * element() |
+ * Examine |
+ * {@link #element element()} |
+ * {@link #peek peek()} |
*
- *
+ *
*
* Queues typically, but do not necessarily, order elements in a
* FIFO (first-in-first-out) manner. Among the exceptions are
@@ -106,55 +113,77 @@ package java.util;
* @param the type of elements held in this collection
*/
public interface Queue extends Collection {
-
/**
- * Inserts the specified element into this queue, if possible. When
- * using queues that may impose insertion restrictions (for
- * example capacity bounds), method offer is generally
- * preferable to method {@link Collection#add}, which can fail to
- * insert an element only by throwing an exception.
+ * Inserts the specified element into this queue 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.
*
- * @param o the element to insert.
- * @return true if it was possible to add the element to
- * this queue, else false
+ * @param e the element to add
+ * @return true (as per the spec for {@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
+ * prevents it from being added to this queue
+ * @throws NullPointerException if the specified element is null and
+ * this queue not permit null elements
+ * @throws IllegalArgumentException if some property of this element
+ * prevents it from being added to this queue
*/
- boolean offer(E o);
+ boolean add(E e);
/**
- * Retrieves and removes the head of this queue, or null
- * if this queue is empty.
+ * Inserts the specified element into this queue if it is possible to do
+ * so immediately without violating capacity restrictions.
+ * When using a capacity-restricted queue, this method is generally
+ * preferable to {@link #add}, which can fail to insert an element only
+ * by throwing an exception.
*
- * @return the head of this queue, or null if this
- * queue is empty.
+ * @param e the element to add
+ * @return true if the element was added to this queue, else
+ * false
+ * @throws ClassCastException if the class of the specified element
+ * prevents it from being added to this queue
+ * @throws NullPointerException if the specified element is null and
+ * this queue does not permit null elements
+ * @throws IllegalArgumentException if some property of this element
+ * prevents it from being added to this queue
*/
- E poll();
+ boolean offer(E e);
/**
- * Retrieves and removes the head of this queue. This method
- * differs from the poll method in that it throws an
- * exception if this queue is empty.
+ * Retrieves and removes the head of this queue. This method differs
+ * from {@link #poll} only in that it throws an exception if this queue
+ * is empty.
*
- * @return the head of this queue.
- * @throws NoSuchElementException if this queue is empty.
+ * @return the head of this queue
+ * @throws NoSuchElementException if this queue is empty
*/
E remove();
/**
- * Retrieves, but does not remove, the head of this queue,
- * returning null if this queue is empty.
+ * Retrieves and removes the head of this queue,
+ * or returns null if this queue is empty.
*
- * @return the head of this queue, or null if this queue
- * is empty.
+ * @return the head of this queue, or null if this queue is empty
*/
- E peek();
+ E poll();
/**
* Retrieves, but does not remove, the head of this queue. This method
- * differs from the peek method only in that it throws an
- * exception if this queue is empty.
+ * differs from {@link #peek} only in that it throws an exception if
+ * this queue is empty.
*
- * @return the head of this queue.
- * @throws NoSuchElementException if this queue is empty.
+ * @return the head of this queue
+ * @throws NoSuchElementException if this queue is empty
*/
E element();
+
+ /**
+ * Retrieves, but does not remove, the head of this queue,
+ * or returns null if this queue is empty.
+ *
+ * @return the head of this queue, or null if this queue is empty
+ */
+ E peek();
}