Module  java.base
软件包  java.util

Interface Queue<E>

  • 参数类型
    E - 保存在此队列中的元素的类型
    All Superinterfaces:
    Collection<E>Iterable<E>
    All Known Subinterfaces:
    BlockingDeque<E>BlockingQueue<E>Deque<E>TransferQueue<E>
    所有已知实现类:
    AbstractQueueArrayBlockingQueueArrayDequeConcurrentLinkedDequeConcurrentLinkedQueueDelayQueueLinkedBlockingDequeLinkedBlockingQueueLinkedListLinkedTransferQueuePriorityBlockingQueuePriorityQueueSynchronousQueue


    public interface Queue<E>
    extends Collection<E>
    设计用于在处理之前保留元素的集合。 除了基本的Collection操作之外,队列还提供额外的插入,抽取和检查操作。 这些方法中的每一种都有两种形式:如果操作失败,则抛出异常,另一种返回一个特殊值(根据操作而异)( nullfalse )。 插入操作的后一种形式专门用于容量限制的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实现通常不定义基于元素的方法的方法equalshashCode ,而是继承从类别Object基于身份的版本,因为基于元素的等式并不总是很好地定义了具有相同元素但不同的排序属性的队列。

    此接口是Java Collections Framework的成员。

    从以下版本开始:
    1.5
    • 方法详细信息

      • 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如果这个队列是空的