虚弱了几天,恢复正常了。开启更新积累模式,还是喜欢安静的夜,双手接触电脑的感觉棒棒的。
接口 Queue
- 类型参数:
-
E
- collection 中所保存元素的类型。
- 所有超级接口:
- Collection<E>, Iterable<E>
- 所有已知子接口:
- BlockingDeque<E>, BlockingQueue<E>, Deque<E>
- 所有已知实现类:
AbstractQueue, ArrayBlockingQueue, ArrayDeque, ConcurrentLinkedQueue, DelayQueue, LinkedBlockingDeque, LinkedBlockingQueue, LinkedList, PriorityBlockingQueue, PriorityQueue, SynchronousQueue
public interface Queue<E>extends Collection<E>
在处理元素前用于保存元素的 collection。除了基本的 Collection
操作外,队列还提供其他的插入、提取和检查操作。每个方法都存在两种形式:一种抛出异常(操作失败时),另一种返回一个特殊值(null 或 false,具体取决于操作)。插入操作的后一种形式是用于专门为有容量限制的 Queue 实现设计的;在大多数实现中,插入操作不会失败。
抛出异常 | 返回特殊值 | |
插入 | add(e) |
offer(e) |
移除 | remove() |
poll() |
检查 | element() |
peek() |
队列通常(但并非一定)以 FIFO(先进先出)的方式排序各个元素。
不过优先级队列和 LIFO 队列(或堆栈)例外,
异:优先级队列根据提供的比较器或元素的自然顺序对元素进行排序,
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 的成员。
接口 Queue方法摘要
方法摘要 | |
---|---|
boolean |
add(E e) 将指定的元素插入此队列(如果立即可行且不会违反容量限制),在成功时返回 true,如果当前没有可用的空间,则抛出 IllegalStateException。 |
E |
element() 获取,但是不移除此队列的头。 |
boolean |
offer(E e) 将指定的元素插入此队列(如果立即可行且不会违反容量限制),当使用有容量限制的队列时,此方法通常要优于 add(E) ,后者可能无法插入元素,而只是抛出一个异常。 |
E |
peek() 获取但不移除此队列的头;如果此队列为空,则返回 null。 |
E |
poll() 获取并移除此队列的头,如果此队列为空,则返回 null。 |
E |
remove() 获取并移除此队列的头。 |
从接口 java.util.Collection 继承的方法 |
---|
addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, remove, removeAll, retainAll, size, toArray, toArray |
接口 Queue方法摘要详细信息
add
boolean add(E e)
- 将指定的元素插入此队列(如果立即可行且不会违反容量限制),在成功时返回 true,如果当前没有可用的空间,则抛出 IllegalStateException。
-
- 指定者:
-
接口
Collection<E>
中的add
-
- 参数:
-
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
软件包 java.util
包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。