-
- 参数类型
-
E
- 保存在此队列中的元素的类型
- All Superinterfaces:
-
Collection<E>
,Iterable<E>
- All Known Subinterfaces:
-
BlockingDeque<E>
,BlockingQueue<E>
,Deque<E>
,TransferQueue<E>
- 所有已知实现类:
-
AbstractQueue
,ArrayBlockingQueue
,ArrayDeque
,ConcurrentLinkedDeque
,ConcurrentLinkedQueue
,DelayQueue
,LinkedBlockingDeque
,LinkedBlockingQueue
,LinkedList
,LinkedTransferQueue
,PriorityBlockingQueue
,PriorityQueue
,SynchronousQueue
public interface Queue<E> extends Collection<E>
设计用于在处理之前保留元素的集合。 除了基本的Collection
操作之外,队列还提供额外的插入,抽取和检查操作。 这些方法中的每一种都有两种形式:如果操作失败,则抛出异常,另一种返回一个特殊值(根据操作而异)(null
或false
)。 插入操作的后一种形式专门用于容量限制的Queue
实现; 在大多数实现中,插入操作不能失败。 Summary of Queue methods Throws exception Returns special value Insertadd(e)
offer(e)
Removeremove()
poll()
Examineelement()
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的成员。
- 从以下版本开始:
- 1.5
-
-
方法摘要
所有方法 接口方法 抽象方法 Modifier and Type 方法 描述 boolean
add(E e)
将指定的元素插入到此队列中,如果可以立即执行此操作而不违反容量限制,true
成功返回true
,如果当前没有可用的空间,则抛出IllegalStateException
。E
element()
检索,但不删除,这个队列的头。boolean
offer(E e)
如果在不违反容量限制的情况下立即执行,则将指定的元素插入到此队列中。E
peek()
检索但不删除此队列的头,如果此队列为空,则返回null
。E
poll()
检索并删除此队列的头部,如果此队列为空,则返回null
。E
remove()
检索并删除此队列的头。-
Methods inherited from interface java.util.Collection
addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, parallelStream, remove, removeAll, removeIf, retainAll, size, spliterator, stream, toArray, toArray
-
-
-
-
方法详细信息
-
add
boolean add(E e)
将指定的元素插入到此队列中,如果可以立即执行此操作,而不会违反容量限制,成功后返回true
,如果当前没有可用空间,则抛出IllegalStateException
。- Specified by:
-
add
在接口Collection<E>
- 参数
-
e
- 要添加的元素 - 结果
-
true
(由Collection.add(E)
指定) - 异常
-
IllegalStateException
- 如果由于容量限制,此时无法添加该元素 -
ClassCastException
- 如果指定元素的类阻止将其添加到此队列中 -
NullPointerException
- 如果指定的元素为空,并且此队列不允许空元素 -
IllegalArgumentException
- 如果此元素的某些属性阻止将其添加到此队列
-
offer
boolean offer(E e)
如果在不违反容量限制的情况下立即执行,则将指定的元素插入到此队列中。 当使用容量限制队列时,此方法通常优于add(E)
,这可能无法仅通过抛出异常来插入元素。- 参数
-
e
- 要添加的元素 - 结果
-
true
如果该元素已添加到此队列,否则为false
- 异常
-
ClassCastException
- 如果指定元素的类阻止将其添加到此队列中 -
NullPointerException
- 如果指定的元素为空,并且该队列不允许空元素 -
IllegalArgumentException
- 如果此元素的某些属性阻止将其添加到此队列
-
remove
E remove()
检索并删除此队列的头。 此方法与poll
的不同之处在于,如果此队列为空,它将抛出异常。- 结果
- 这个队列的头
- 异常
-
NoSuchElementException
- 如果这个队列是空的
-
poll
E poll()
检索并删除此队列的头部,如果此队列为空,则返回null
。- 结果
-
这个队列的头,或
null
如果这个队列是空的
-
element
E element()
检索,但不删除,这个队列的头。 此方法与peek
不同之处在于,如果此队列为空,它将抛出异常。- 结果
- 这个队列的头
- 异常
-
NoSuchElementException
- 如果这个队列是空的
-
peek
E peek()
检索但不删除此队列的头,如果此队列为空,则返回null
。- 结果
-
这个队列的头,或
null
如果这个队列是空的
-
-