手撕源码系列之队列 -- Deque

什么是Deque

Deque(Double Ended Queue)是一个双向队列,允许两头进出,即:

  1. 既可以添加到队尾,也可以添加到队首,
  2. 既可以从队首获取,又可以从队尾获取。

Deque继承了Queue

Deque方法

    //插入头部,异常会报错
    void addFirst(E e);

    //插入尾部,异常会报错
    void addLast(E e);

    //插入头部,异常返回false
    boolean offerFirst(E e);

    //插入尾部,异常返回false
    boolean offerLast(E e);

    //移除并获取头部第一个元素 异常抛出NoSuchElementException
    E removeFirst();

    //移除并获取尾部第一个元素 异常抛出NoSuchElementException
    E removeLast();

    //移除并获取头部第一个元素 deque为空返回null
    E pollFirst();

    //移除并获取尾部第一个元素 deque为空返回null
    E pollLast();
    
    //获取头部第一个元素,异常抛出NoSuchElementException 
    E getFirst();

    //获取尾部第一个元素,异常抛出NoSuchElementException 
    E getLast();

    //获取头部第一个元素,异常返回null 
    E peekFirst();

    //获取尾部第一个元素,异常返回null 
    E peekLast();

    
    //移除首先出现的指定的元素,如果队列中不存在则不影响。
    boolean removeFirstOccurrence(Object o);

    //移除最后出现的指定的元素(即倒序找),如果队列中不存在则不影响。
    boolean removeLastOccurrence(Object o);

    // *** Queue的方法 ***

    boolean add(E e);

    boolean offer(E e);

    E remove();

    E poll();

    E element();

    E peek();


    // *** 堆栈方法 ***


    //头部添加一个元素,如果队列长度不够则抛出 IllegalStateException
    void push(E e);

    //移除并返回头部第一个元素,异常抛出NoSuchElementException 
    E pop();


    // *** 集合方法 ***
    boolean remove(Object o);

    boolean contains(Object o);
    
    public int size();

    //迭代器 头->尾
    Iterator<E> iterator();

    //倒叙迭代器 尾->头
    Iterator<E> descendingIterator();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值