JDK中的Queue简析(1)

一、什么是队列?

        百度百科中的解释,队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。

二、队列的特征:

        FIFO:(First In First Out)先进先出的一种线性数据结构。线性即有序,而队列的排序规则就是入队的自然排序顺序。

三、JDK中的队列:

        JDK中对Queue的描述概括为一句话:一种存放element的集合,对于集合中的element可以提供具有优先级的处理。

        具体的类继承关系如下图:

        

Queue接口的继承关系

四、JDK中队列的特性:

        简单来说,Queue就是一个集合,所以在JDK中,Queue接口继承了Collection接口,因此Queue具有集合的基本特性。除了具有集合的基本特征之外,Queue还提供了其特有的其他插入、提取和检查操作,具体与集合中的基本操作的关系和区别可以概括为两方面:

        a、集合中的基本操作,add(e)、remove()和element()方法在操作失败时会抛出异常;

        b、Queue提供的特有的操作offer(e)、poll()和peek()则根据具体的不同操作返回null或者false;

        提供的具体方法如下图:

          

Queue提供的方法

五、JDK中队列中提供的API:

1、add(E e) / offer(E e):

        都是在队尾插入一个不为null的element,不同之处在于add在插入失败的时候会抛出异常,而offer会返回false;

        offer方法的使用场景在于插入失败是一种正常情况而不用抛出异常时,比如固定容量的队列中;

2、remove() / poll(): 

        都是从队首取出一个element,不同之处在于remove在队列为空时会抛出异常,而poll会返回null;

3、element() / peek():

        功能上与remove()/poll()相同,不同的是只拿到队首的element,但是不取出,即队首的element依然存在;

        

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容

  • 1、简介 Queue(队列):一种特殊的线性表,它只允许在表的前端(front)进行删除操作,只允许在表的后端(r...
    瑜小贤阅读 590评论 1 0
  • 简介 Queue,翻译成队列,是一种先进先出(FIFO, First In First Out)的数据结构。最先放...
    齐晋阅读 2,566评论 0 4
  • Queue Queue继承自 Collection,我们先来看看类结构吧,代码量比较少,我直接贴代码了 从方法名上...
    Anonymous___阅读 909评论 0 1
  • 友情提示:文章可能有点长,各种集合的实现原理我用自己的理解去解释了,配合源码食用更佳。 一、Java集合框架简述 ...
    Marker_Sky阅读 1,380评论 1 2
  • 背景 Java queue接口是JDK1.5后才出现的集合, 主要目的是提供一个有优先级顺序的集合操作。 除了包括...
    爱跳的老鼠君阅读 3,244评论 0 0