Java集合源码分析之Queue(二):接口Deque

Deque全称为double ended queue,即双向队列,它允许在两侧插入或删除元素,同时也建议我们不要向其中插入null值。除此之外,其余特性则和父级Queue类似。Deque大多数情况下不会限制元素的数量,但这不是必须的。

Deque中定义的方法主要分为四部分,第一部分就如Deque定义所言,提供两侧插入或删除的方法。第二部分是继承自Queue的实现。第三部分表示如果要基于此实现一个Stack,需要实现的方法。最后一部分是继承自Collection的方法。

两侧插入、删除

这里方法和Queue定义方式一致,但却是针对两侧插入删除的。

//在队首添加元素
void addFirst(E e);
//在队首添加元素
boolean offerFirst(E e);

//在队尾添加元素
void addLast(E e);
boolean offerLast(E e);

//删除队首元素
E removeFirst();
E pollFirst();

//删除队尾元素
E removeLast();
E pollLast();

//获取队首元素
E getFirst();
E peekFirst();

//获取队尾元素
E getLast();
E peekLast();

//删除第一个事件,大多数指的是删除第一个和 o equals的元素
boolean removeFirstOccurrence(Object o);
//删除最后一个事件,大多数指的是删除最后一个和 o equals的元素
boolean removeLastOccurrence(Object o);

与Queue对应的方法

因为Queue遵循FIFO,所以其方法在Deque中对应关系有所改变,结合Deque的定义,我们很容易就想到它们的对应关系:

//与addLast(E e)等价
boolean add(E e);

//与offerLast(E e)等价
boolean offer(E e);

//与removeFirst()等价
E remove();

//与pollFirst()等价
E poll();

//与getFirst()等价
E element();

//与peekFirst()等价
E peek();

实现Stack

Stack仅在一侧支持插入删除操作等操作,遵循LIFO原则。

//与addFirst()等价
void push(E e);

//与removeFirst()等价
E pop();

继承于Collection的方法

这里主要关注两个方法。

//顺序是从队首到队尾
Iterator<E> iterator();

//顺序是从队尾到队首
Iterator<E> descendingIterator();

好了,这个接口是不是相当简单呢?接下来我们就看看一个真正的实现类,ArrayDeque,的具体内容吧。

上一篇:Java集合源码分析之Queue(一):超级接口Queue

下一篇:Java集合源码分析之Queue(三):ArrayDeque


我是飞机酱,如果您喜欢我的文章,可以关注我~

编程之路,道阻且长。唯,路漫漫其修远兮,吾将上下而求索。

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

推荐阅读更多精彩内容

  • 在日常生活中,排队几乎随处可见,上地铁要排队,买火车票要排队,就连出门吃个大餐,也要排队。。。之前研究的Array...
    大大纸飞机阅读 8,967评论 13 7
  • 在经过一次没有准备的面试后,发现自己虽然写了两年的android代码,基础知识却忘的差不多了。这是程序员的大忌,没...
    猿来如痴阅读 8,040评论 3 10
  • java笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
    jmychou阅读 5,407评论 0 3
  • 四年的时光匆匆而过,我还未察觉,竟已到离别的时刻。感谢陪伴了我这么久的你们——我的室友们。 不得不说我们的相遇是一...
    南木的小屋阅读 3,207评论 2 2
  • 孤独的时候让雨把心浇的湿哒哒的。或许我不该为一点小事跟自己斗气的,让自己的胃受折磨,可是就是很莫名其妙的发呆了开始...
    六六宗阅读 3,097评论 0 2