https://docs.oracle.com/javase/8/docs/api/java/util/Queue.html

  public interface Queue<E> extends Collection<E>

  E是Queue中元素的类型。

  父接口:Collection<E>, Iterable<E>

  子接口:BlockingDeque<E>, BlockingQueue<E>, Deque<E>, TransferQueue<E>

  常见实现类: ArrayDeque、 LinkedList

  一、介绍

  Queue(队列)是一个专为进行处理前保存元素而设计的集合。

  除了Collection接口中基本操作外,Queue还提供了其它的插入、获取和检查操作。每种操作有两种形式的方法:一种是当操作失败时抛出异常;另一种是失败时返回特殊的值(null or false)。

  后一种形式的插入操作,是专门为有容量限制的Queue实现设计的,在大多数的实现类中,插入操作不会失败。

  throws exception return value
Insert add(e) offer(e)
Remove remove() poll()
Examine element() peek()

  队列通常但不一定以FIFO(先进先出)方式排列元素。

  例如,优先队列,根据它提供的比较器进行排序,或者根据元素的自然排序。还有栈(LIFO Queue),它的排序规则是LIFO。

  不论是采用哪种排序,Queue的头部都是那个通过remove()或poll()来移除的元素。

  在FIFO queue中,新的元素都插入队列的尾部。不同的实现类有不同的规则。

  Queue通常不允许插入null元素,然而一些实现类比如LinkedList,并不禁止null值的插入。但是我们仍然需要避免插入null元素,因为当Queue为空时,poll()会返回null。

  Queue的实现类一般不会重写equals()和hashcode(),而是直接继承Object类中的版本。

  Queue接口是Java Collections Framework的成员。

  二、方法

  1、boolean add(E e)

  若没有超出容量限制,插入指定元素。

  操作成功返回true;

  如果当前没有空间可用,抛出一个IllegalStateException

  2、boolean offer(E e)

  若没有超出容量限制,插入指定元素。

  操作成功返回true;失败返回false。

  在有容量限制的队列中,这个方法比add()更好。

  3、E remove()

  检索并删除队列的头部元素,还将它返回。

  队列为空时抛出异常。

  4、E poll()

  检索并删除队列的头部元素,并将它返回。

  队列为空时返回null。

  5、E element()

  检索并返回头部元素。

  队列为空时,抛出出异常

  6、E peek()

  检索并返回头部元素。

  队列为空时,返回null。

  

Collection接口的子接口——Queue接口的更多相关文章

  1. Java中的集合(三)继承Collection的Queue接口

    Java中的集合(三)继承Collection的Queue接口 一.Queue介绍 Queue接口继承自Collection接口,是Java中定义的一种队列数据结构,元素是有序的(按插入顺序排序),先 ...

  2. 16、Collection接口及其子接口Set和List(常用类LinkedList,ArrayList,Vector和Stack)

    16.Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些Collection允许相同 ...

  3. Collection接口的子接口——Deque接口

    https://docs.oracle.com/javase/8/docs/api/java/util/Deque.html public interface Deque<E> exten ...

  4. LinkedList子类与Queue接口

    LinkedList表示的是一个链表的操作类.定义如下: public class LinkedList<E> extends AbstractSequentialList<E> ...

  5. 集合框架之Queue接口

    Queue接口 在处理元素前用于保存元素的 collection.除了基本的 Collection 操作外,队列还提供其他的插入.提取和检查操作.每个方法都存在两种形式:一种抛出异常(操作失败时),另 ...

  6. Java中的队列:java.util.Queue接口

    队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作. Queue接口与List.Set同一级别,都是继承了Collection接口.Linked ...

  7. java中Queue接口

    Queue接口与List.Set同一级别,都是继承了Collection接口.LinkedList实现了Queue接 口.Queue接口窄化了对LinkedList的方法的访问权限(即在方法中的参数类 ...

  8. Java集合类——Set、List、Map、Queue接口

    目录 Java 集合类的基本概念 Java 集合类的层次关系 Java 集合类的应用场景 一. Java集合类的基本概念 在编程中,常需要集中存放多个数据,数组是一个很好的选择,但数组的长度需提前指定 ...

  9. Queue接口的实现类竟然有一个是LinkedList,一个是优先队列(同一个接口,只改了不同的实现类,附源码)

    输出是: Queue接口底层换一个实现类,照样的是调用Queue接口中的方法 import java.util.HashMap; import java.util.LinkedList; import ...

随机推荐

  1. $\LaTeX$数学公式大全13

    $13\ Text\ Mode:\ Accents\ and\ Symbols$ $\AA$ \AA $\S$ \S

  2. Leetcode题目22.括号生成(动态规划-中等)

    题目描述: 给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n = 3,生成结果为: [ "((()))", "( ...

  3. json-lib json反序列化——日期转换

    将json格式的字符串转为对象,其中key-value有将String的日期转为Date类型,怪现象就是,转出来的Date类型的值是当前的系统时间. 网上有许多答案,在反序列化之前需要注册Date解析 ...

  4. 域名到IP 报错socket.gaierror: [Errno 8] nodename nor servname provided, or not known

    Python中如何通过域名,查看对应的IP? 请看如下代码: import socket hostname="www.baidu.com" ip = socket.gethostb ...

  5. Selenium 2自动化测试实战22(处理HTML5的视频播放)

    一.处理HTML5的视频播放 大多数浏览器使用控件(如Flash)来播放视频,但是,不同的浏览器需要使用不同的插件.HTML5定义了一个新的元素<video>,指定了一个标准的方式来嵌入电 ...

  6. bert系列一:《Attention is all you need》论文解读

    论文创新点: 多头注意力 transformer模型 Transformer模型 上图为模型结构,左边为encoder,右边为decoder,各有N=6个相同的堆叠. encoder 先对inputs ...

  7. Leetcode之动态规划(DP)专题-392. 判断子序列(Is Subsequence)

    Leetcode之动态规划(DP)专题-392. 判断子序列(Is Subsequence) 给定字符串 s 和 t ,判断 s 是否为 t 的子序列. 你可以认为 s 和 t 中仅包含英文小写字母. ...

  8. iOS 12.4 越狱已经发布

    昨天 unc0ver 3.5.0 发布,支持 iOS 12.4 越狱.12.4 目前为最新版的系统. 下载地址:https://github.com/pwn20wndstuff/Undecimus/r ...

  9. 【Linux开发】linux设备驱动归纳总结(三):6.poll和sellct

    linux设备驱动归纳总结(三):6.poll和sellct xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...

  10. springboot_redis

    1.引入redis的启动器 <dependency> <groupId>org.springframework.boot</groupId> <artifac ...