返回介绍

java.util 接口 Queue<E>

发布于 2019-10-04 09:51:35 字数 5177 浏览 999 评论 0 收藏 0

类型参数:
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

方法摘要
Eelement()

检索,但是不移除此队列的头。

booleanoffer(Eo)

如果可能,将指定的元素插入此队列。

Epeek()

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

Epoll()

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

Eremove()

检索并移除此队列的头。

从接口 java.util.Collection 继承的方法
add, addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, remove, removeAll, retainAll, size, toArray, toArray

方法详细信息

offer

boolean offer(Eo)
如果可能,将指定的元素插入此队列。使用可能有插入限制(例如容量限定)的队列时, 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 - 如果此队列为空。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文