模块 java.base
软件包 java.util
Interface Queue
参数类型
E - 此队列中保留的元素类型
All Superinterfaces:
Collection , Iterable
All Known Subinterfaces:
BlockingDeque , BlockingQueue , Deque , TransferQueue
所有已知实现类:
AbstractQueue , ArrayBlockingQueue , ArrayDeque , ConcurrentLinkedDeque , ConcurrentLinkedQueue , DelayQueue , LinkedBlockingDeque , LinkedBlockingQueue , LinkedList , LinkedTransferQueue , PriorityBlockingQueue , PriorityQueue , SynchronousQueue
public interface Queue
extends Collection
设计用于在处理之前保持元素的集合。 除了基本的 Collection 操作外,队列还提供额外的 插入,提取和检查操作。 这些方法中的每一种都以 两种形式存在:一种在操作失败时抛出异常,另一种返回特殊值( null 或 false ,具体取决于操作)。 后一种形式的插入操作专门设计用于容量限制的 Queue 实现; 在大多数实现中,插入操作不会失败。
Summary of Queue methods Throws exception Returns special value Insert add(e) offer(e) Remove remove() poll() Examine element() peek()
队列通常(但不一定)以 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 实现通常不定义方法 equals 和 hashCode 的基于元素的版本,而是从类 Object 继承基于身份的版本,因为对于具有相同元素但具有不同排序属性的队列,基于元素的相等性并不总是很好地定义。
此接口是 Java Collections Framework 的成员。
boolean add(E e) 如果可以在不违反容量限制的情况下立即执行此操作,则将指定的元素插入此队列,成功时返回 true ,如果当前没有空间,则抛出 IllegalStateException 。 boolean offer(E e) 如果可以在不违反容量限制的情况下立即执行此操作,则将指定的元素插入此队列。 E poll() 检索并删除此队列的头部,如果此队列为空,则返回 null 。 E remove() 检索并删除此队列的头部。 E element() 检索但不删除此队列的头部。 E peek() 检索但不删除此队列的头部,如果此队列为空,则返回 null 。
声明方法的接口 java.util.Collection
addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, parallelStream, remove, removeAll, removeIf, retainAll, size, spliterator, stream, toArray
声明方法的接口 java.lang.Iterable
forEach
方法详细信息
add
boolean add(E e)
如果可以在不违反容量限制的情况下立即执行此操作,则将指定的元素插入此队列,成功时返回 true ,如果当前没有空间,则抛出 IllegalStateException 。
Specified by:
add在界面 Collection
参数
e - 要添加的元素
结果
true (由 Collection.add(E)指定)
异常
IllegalStateException - 如果由于容量限制,此时无法添加元素
ClassCastException - 如果指定元素的类阻止将其添加到此队列
NullPointerException - 如果指定的元素为null且此队列不允许null元素
IllegalArgumentException - 如果此元素的某些属性阻止将其添加到此队列
offer
boolean offer(E e)
如果可以在不违反容量限制的情况下立即执行此操作,则将指定的元素插入此队列。 使用容量限制队列时,此方法通常优于add(E) ,只能通过抛出异常来插入元素。
参数
e - 要添加的元素
结果
true如果元素已添加到此队列, false
异常
ClassCastException - 如果指定元素的类阻止将其添加到此队列
NullPointerException - 如果指定的元素为null且此队列不允许null元素
IllegalArgumentException - 如果此元素的某些属性阻止将其添加到此队列
remove
E remove()
检索并删除此队列的头部。 此方法与poll()的区别仅在于,如果此队列为空,则抛出异常。
结果
这个队列的头
异常
NoSuchElementException - 如果此队列为空
poll
E poll()
检索并删除此队列的头部,如果此队列为空,则返回 null 。
结果
此队列的头部,如果此队列为空, null
element
E element()
检索但不删除此队列的头部。 此方法与peek的不同之处仅在于,如果此队列为空,则会抛出异常。
结果
这个队列的头
异常
NoSuchElementException - 如果此队列为空
peek
E peek()
检索但不移除此队列的头部,如果此队列为空,则返回 null 。
结果
此队列的头部,如果此队列为空, null



