-
- 参数类型
-
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
应将null
插入Queue
,因为null
也被poll
方法用作特殊返回值,以指示队列不包含任何元素。Queue
实现通常不定义方法equals
和hashCode
的基于元素的版本,而是从类Object
继承基于身份的版本,因为对于具有相同元素但具有不同排序属性的队列,基于元素的相等性并不总是很好地定义。此接口是Java Collections Framework的成员。
- 从以下版本开始:
- 1.5
-
-
方法摘要
所有方法 实例方法 抽象方法 变量和类型 方法 描述 boolean
add(E e)
如果可以在不违反容量限制的情况下立即执行此操作,则将指定的元素插入此队列,成功时返回true
,如果当前没有空间,则抛出IllegalStateException
。E
element()
检索但不删除此队列的头部。boolean
offer(E e)
如果可以在不违反容量限制的情况下立即执行此操作,则将指定的元素插入此队列。E
peek()
检索但不删除此队列的头部,如果此队列为空,则返回null
。E
poll()
检索并删除此队列的头部,如果此队列为空,则返回null
。E
remove()
检索并删除此队列的头部。-
声明方法的接口 java.util.Collection
addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, parallelStream, remove, removeAll, removeIf, retainAll, size, spliterator, stream, toArray, toArray, toArray
-
-
-
-
方法详细信息
-
add
boolean add(E e)
如果可以在不违反容量限制的情况下立即执行此操作,则将指定的元素插入此队列,成功时返回true
,如果当前没有空间,则抛出IllegalStateException
。- Specified by:
-
add
在界面Collection<E>
- 参数
-
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
-
-