Module java.base
Package java.util

Class AbstractQueue<E>

java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractQueue<E>
类型参数:
E - 此队列中保存的元素的类型
所有实现的接口:
Iterable<E>, Collection<E>, Queue<E>
直接已知的子类:
ArrayBlockingQueue, ConcurrentLinkedQueue, DelayQueue, LinkedBlockingDeque, LinkedBlockingQueue, LinkedTransferQueue, PriorityBlockingQueue, PriorityQueue, SynchronousQueue

public abstract class AbstractQueue<E> extends AbstractCollection<E> implements Queue<E>
此类提供了一些 Queue 操作的骨架实现。此类中的实现适用于基本实现不允许 null 元素的情况。方法 addremoveelement 基于 offerpollpeek,但是抛出异常而不是通过 falsenull 返回来指示失败。

扩展此类的 Queue 实现必须至少定义一个不允许插入 null 元素的方法 Queue.offer(E),以及方法 Queue.peek()Queue.poll()Collection.size()Collection.iterator()。通常还会覆盖其他方法。如果无法满足这些要求,请考虑继承 AbstractCollection

此类是 Java 集合框架 的成员。

自 JDK 版本:
1.5
  • Constructor Details

    • AbstractQueue

      protected AbstractQueue()
      供子类使用的构造函数。
  • Method Details

    • add

      public boolean add(E e)
      如果可以立即在不违反容量限制的情况下将指定的元素插入此队列,则将其插入此队列,成功时返回 true,如果当前没有可用空间则抛出 IllegalStateException

      此实现在 offer 成功时返回 true,否则抛出 IllegalStateException

      指定者:
      add 在接口 Collection<E>
      指定者:
      add 在接口 Queue<E>
      覆盖:
      add 在类 AbstractCollection<E>
      参数:
      e - 要添加的元素
      返回:
      true(如 Collection.add(E) 中指定的)
      抛出:
      IllegalStateException - 如果由于容量限制而当前无法添加元素
      ClassCastException - 如果指定元素的类别阻止将其添加到此队列
      NullPointerException - 如果指定元素为 null 且此队列不允许 null 元素
      IllegalArgumentException - 如果指定元素的某些属性阻止将其添加到此队列
    • remove

      public E remove()
      检索并移除此队列的头部。此方法与 poll 的区别仅在于如果此队列为空则抛出异常。

      此实现返回 poll 的结果,除非队列为空。

      指定者:
      remove 在接口 Queue<E>
      返回:
      此队列的头部
      抛出:
      NoSuchElementException - 如果此队列为空
    • element

      public E element()
      检索但不移除此队列的头部。此方法与 peek 的区别仅在于如果此队列为空则抛出异常。

      此实现返回 peek 的结果,除非队列为空。

      指定者:
      element 在接口 Queue<E>
      返回:
      此队列的头部
      抛出:
      NoSuchElementException - 如果此队列为空
    • clear

      public void clear()
      从此队列中移除所有元素。此调用返回后,队列将为空。

      此实现重复调用 poll,直到返回 null

      指定者:
      clear 在接口 Collection<E>
      覆盖:
      clear 在类 AbstractCollection<E>
    • addAll

      public boolean addAll(Collection<? extends E> c)
      将指定集合中的所有元素添加到此队列中。尝试将队列的所有元素添加到自身会导致 IllegalArgumentException。此操作的行为在进行操作时修改了指定集合时是未定义的。

      此实现遍历指定集合,并将迭代器返回的每个元素依次添加到此队列。尝试添加元素时遇到运行时异常(特别是 null 元素)可能会导致在抛出相关异常时只有一些元素已成功添加。

      指定者:
      addAll 在接口 Collection<E>
      覆盖:
      addAll 在类 AbstractCollection<E>
      参数:
      c - 包含要添加到此队列中的元素的集合
      返回:
      true 如果此调用导致队列发生更改
      抛出:
      ClassCastException - 如果指定集合的元素的类别阻止将其添加到此队列
      NullPointerException - 如果指定集合包含 null 元素且此队列不允许 null 元素,或者指定集合为 null
      IllegalArgumentException - 如果指定集合的某些属性阻止将其添加到此队列,或者指定集合为此队列
      IllegalStateException - 如果由于插入限制而当前无法添加所有元素
      参见: