JavaTM 2 Platform
Standard Ed. 5.0

java.util
接口 Queue<E>

类型参数:
E - 集合中所保存元素的类型。
所有超级接口:
Collection<E>, Iterable<E>
所有已知子接口:
BlockingQueue<E>
所有已知实现类:
AbstractQueue, ArrayBlockingQueue, ConcurrentLinkedQueue, DelayQueue, LinkedBlockingQueue, LinkedList, PriorityBlockingQueue, PriorityQueue, SynchronousQueue

public interface Queue<E>
extends Collection<E>

在处理元素前用于保存元素的集合。除了基本的 Collection 操作外,队列还提供其他的插入、提取和检查操作。

队列通常(但并非一定)以 FIFO(先进先出)的方式排序各个元素。不过优先级队列和 LIFO 队列(或堆栈)例外,前者根据提供的比较器或元素的自然顺序对元素进行排序,后者按 LIFO(后进先出)的方式对元素进行排序。无论使用哪种排序方式,队列的 都是调用 remove()poll() 所移除的元素。在 FIFO 队列中,所有的新元素都插入队列的末尾。其他种类的队列可能使用不同的元素放置规则。每个 Queue 实现必须指定其顺序属性。

如果可能,offer 方法可插入一个元素,否则返回 false。这与 Collection.add 方法不同,该方法只能通过抛出未经检查的异常使添加元素失败。offer 方法设计用于正常的失败情况,而不是出现异常的情况,例如在容量固定(有界)的队列中。

remove()poll() 方法可移除和返回队列的头。到底从队列中移除哪个元素是队列排序策略的功能,而该策略在各种实现中是不同的。remove()poll() 方法仅在队列为空时其行为有所不同:remove() 方法抛出一个异常,而 poll() 方法则返回 null

element()peek() 返回,但不移除,队列的头。

Queue 接口并未定义阻塞队列的方法,而这在并发编程中是很常见的。BlockingQueue 接口定义了那些等待元素出现或等待队列中有可用空间的方法,这些方法扩展了此接口。

Queue 实现通常不允许插入 null 元素,尽管某些实现(如 LinkedList)并不禁止插入 null。即使在允许 null 的实现中,也不应该将 null 插入到 Queue 中,因为 null 也用作 poll 方法的一个特殊返回值,表明队列不包含元素。

Queue 实现通常未定义 equalshashCode 方法的基于元素的版本,而是从 Object 类继承了基于身份的版本,因为对于具有相同元素但有不同排序属性的队列而言,基于元素的相等性并非总是定义良好的。

此接口是 Java Collections Framework 的成员。

从以下版本开始:
1.5
另请参见:
Collection, LinkedList, PriorityQueue, LinkedBlockingQueue, BlockingQueue, ArrayBlockingQueue, LinkedBlockingQueue, PriorityBlockingQueue

方法摘要
 E element()
          检索,但是不移除此队列的头。
 boolean offer(E o)
          如果可能,将指定的元素插入此队列。
 E peek()
          检索,但是不移除此队列的头,如果此队列为空,则返回 null
 E poll()
          检索并移除此队列的头,如果此队列为空,则返回 null
 E remove()
          检索并移除此队列的头。
 
从接口 java.util.Collection 继承的方法
add, addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, remove, removeAll, retainAll, size, toArray, toArray
 

方法详细信息

offer

boolean offer(E o)
如果可能,将指定的元素插入此队列。使用可能有插入限制(例如容量限定)的队列时,offer 方法通常要优于 Collection.add(E) 方法,因为后者只能通过抛出异常使插入元素失败。

参数:
o - 要插入的元素。
返回:
如果可以向此队列添加元素,则返回 true;否则返回 false

poll

E poll()
检索并移除此队列的头,如果此队列为空,则返回 null

返回:
队列的头,如果此队列为空,则返回 null

remove

E remove()
检索并移除此队列的头。此方法与 poll 方法的不同在于,如果此队列为空,它会抛出一个异常。

返回:
队列的头。
抛出:
NoSuchElementException - 如果此队列为空。

peek

E peek()
检索,但是不移除此队列的头,如果此队列为空,则返回 null

返回:
队列的头,如果此队列为空,则返回 null

element

E element()
检索,但是不移除此队列的头。此方法与 peek 方法的惟一不同是,如果此队列为空,它会抛出一个异常。

返回:
队列的头。
抛出:
NoSuchElementException - 如果此队列为空。

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策