--- jsr166/src/main/java/util/Queue.java 2003/09/15 12:02:23 1.19
+++ jsr166/src/main/java/util/Queue.java 2011/03/15 19:47:03 1.36
@@ -1,15 +1,46 @@
/*
* Written by Doug Lea with assistance from members of JCP JSR-166
- * Expert Group and released to the public domain. Use, modify, and
- * redistribute this code in any way without acknowledgement.
+ * Expert Group and released to the public domain, as explained at
+ * http://creativecommons.org/publicdomain/zero/1.0/
*/
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.
+ * 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.
+ *
+ *
+ *
+ *
+ * |
+ * Throws exception |
+ * Returns special value |
+ *
+ *
+ * Insert |
+ * {@link #add add(e)} |
+ * {@link #offer offer(e)} |
+ *
+ *
+ * Remove |
+ * {@link #remove remove()} |
+ * {@link #poll poll()} |
+ *
+ *
+ * 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
@@ -66,7 +97,7 @@ package java.util;
*
*
*
This interface is a member of the
- *
+ *
* Java Collections Framework.
*
* @see java.util.Collection
@@ -79,57 +110,80 @@ package java.util;
* @see java.util.concurrent.PriorityBlockingQueue
* @since 1.5
* @author Doug Lea
+ * @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 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
+ * 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
*/
- 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 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 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();
}