E
- 保存在此集合中的元素的类型
public interface Queue<E> extends Collection<E>
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
插入到Queue
,因为null
也被poll
方法用作特殊的返回值,以指示队列不包含元素。
Queue
实现通常不定义基于元素的方法equals
和hashCode
的方法,而是从类别Object
继承基于标识的版本,因为基于元素的等式并不总是很好地定义了具有相同元素但不同的排序属性的队列。
此接口是成员Java Collections Framework 。
Collection
, LinkedList
, PriorityQueue
, LinkedBlockingQueue
, BlockingQueue
, ArrayBlockingQueue
, LinkedBlockingQueue
, PriorityBlockingQueue
Modifier and Type | Method and Description |
---|---|
boolean |
add(E e)
将指定的元素插入到此队列中,如果可以立即执行此操作,而不会违反容量限制,
true 在成功后返回
IllegalStateException 如果当前没有可用空间,则抛出IllegalStateException。
|
E |
element()
检索,但不删除,这个队列的头。
|
boolean |
offer(E e)
如果在不违反容量限制的情况下立即执行,则将指定的元素插入到此队列中。
|
E |
peek()
检索但不删除此队列的头,如果此队列为空,则返回
null 。
|
E |
poll()
检索并删除此队列的头,如果此队列为空,则返回
null 。
|
E |
remove()
检索并删除此队列的头。
|
addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, parallelStream, remove, removeAll, removeIf, retainAll, size, spliterator, stream, toArray, toArray
boolean add(E e)
true
在成功后返回
IllegalStateException
如果当前没有可用空间,则抛出IllegalStateException。
add
在界面
Collection<E>
e
- 要添加的元素
true
(由
Collection.add(E)
指定 )
IllegalStateException
- 如果由于容量限制,此时无法添加该元素
ClassCastException
- 如果指定元素的类阻止将其添加到此队列中
NullPointerException
- 如果指定的元素为空,并且该队列不允许空元素
IllegalArgumentException
- 如果此元素的某些属性阻止将其添加到此队列
boolean offer(E e)
add(E)
,这可能无法仅通过抛出异常来插入元素。
e
- 要添加的元素
true
如果元素被添加到这个队列,否则
false
ClassCastException
- 如果指定元素的类阻止将其添加到此队列中
NullPointerException
- 如果指定的元素为空,并且该队列不允许空元素
IllegalArgumentException
- 如果此元素的某些属性阻止将其添加到此队列
E remove()
poll
不同之处在于,如果此队列为空,它将抛出异常。
NoSuchElementException
- 如果这个队列是空的
E poll()
null
。
null
如果这个队列是空的
E element()
peek
的不同之处在于,如果此队列为空,它将抛出异常。
NoSuchElementException
- 如果这个队列是空的
E peek()
null
。
null
if this queue is empty