Deque接口

第1部分 Deque接口介绍

Deque接口简介

Deque译为双端队列,在双向都能作为队列来使用,同时可用作栈。Deque接口的方法是对称成比例的。
Deque接口继承Queue接口,因此具有Queue,Collection,Iterable的方法属性。

Deque接口常用API

省略与Queue接口类似的方法

修饰语和返回类型特殊方法描述
booleanremoveFirstOccurrence(Object o)移除第一个出现对象o的元素
booleanremoveLastOccurrence(Object o)移除最后一个出现对象o的元素
IteratordescendingIterator()返回逆序迭代器
用作栈的方法
voidpush(E e)压入元素到栈顶(也就是队头)
Epop()从栈顶移除并返回元素

第2部分 Deque接口数据结构

Deque接口的继承关系

java.lang.Object
	↳   java.lang.Iterable<E>
   		↳   java.util.Collection<E>
        	 ↳   java.util.Queue<E>
        	 	↳
         
public interface Deque<E> extends Queue<E> {}

Deque接口的关系图
在这里插入图片描述
图1 Deque接口的关系图

第3部分 Deque接口源码解析(基于JDK-8u201)

public interface Deque<E> extends Queue<E> {
    //移除第一个出现对象o的元素
    boolean removeFirstOccurrence(Object o);
    //移除最后一个出现对象o的元素
    boolean removeLastOccurrence(Object o);
    //返回逆序迭代器
    Iterator<E> descendingIterator();
    
    //用作栈
    void push(E e);
    E pop();

	//跟Queue一样的增删和判断是否有元素的方法
    void addFirst(E e);
    void addLast(E e);
    boolean offerFirst(E e);
    boolean offerLast(E e);
    E removeFirst();
    E removeLast();
    E pollFirst();
    E pollLast();
    E getFirst();
    E getLast();
    E peekFirst();
    E peekLast();

	//继承Queue的方法
 	boolean add(E e);
    boolean offer(E e);
    E remove();
    E poll();
    E element();
    E peek();
    
    //继承Collection的方法
    boolean remove(Object o);
    boolean contains(Object o);
    public int size();
    
    //继承Iterable的方法
    Iterator<E> iterator();
}

从源码中可以看出,使用了"面向继承"的思想后,发现新增的方法只有5个,而且比较简单。同时,可以看出,双端队列的方法都是“double”的,即对称成比例。这样划分后,就能很好记住这些方法了。给方法属性归类总结,也是分析源码一项比较好的习惯,这样能看最少的代码,记住最多的内容。

在官网中,给出了很多方法总结与对比,如下:
在这里插入图片描述
图2 双端队列作为队列的方法
在这里插入图片描述
图3 队列中对应双端队列的方法
在这里插入图片描述
图4 栈对应双端队列的方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值