zoukankan      html  css  js  c++  java
  • Java 双端队列接口 Deque

    Deque 是一种支持在两端进行操作的线性结构,包含了栈和队列的功能。Java 中建议使用 Dqueue 的实现来替代遗留的 Stack 类。本文将介绍 Deque 提供的主要 API。

    双端操作 API

    Deque 的核心 API 可以按照操作头部和尾部分为两类,并可以进一步按照抛出异常和返回特殊值进行进一步划分。

    Deque 方法汇总
    头部操作 尾部操作
    抛出异常 返回特殊值 抛出异常 返回特殊值
    插入 addFirst(e) offerFirst(e) addLast(e) offerLast(e)
    删除 removeFirst() pollFirst() removeLast() pollLast()
    获取 getFirst() peekFirst() getLast() peekLast()

    需要注意的是,某些 Deque 的实现(如 ArrayDeque)在调用 offerFirst(e), offerLast(e) 时,若传入的 e 为 null,仍然会抛出 NullPointerEaception,而另一些实现则不会(如 LinkedList)。

    descendingIterator()

    返回一个迭代器,迭代器从尾部往头部方向返回元素。

    removeFirstOccurrence(Object o) / removeLastOccurrence(Object o)

    移除首次/最后出现的元素 o,Deque 中可以放入重复元素,首次出现的意思是距离头部最近的与 o 相等的元素,同理,最后出现的意思是距离尾部最近的与 o 相等的元素。

    队列

    Deque 继承了 Queue 接口,因此也提供了队列相关操作的东西。进行队列的操作本质是双端队列的 API 换了个名字,只需要将名字对应起来即可。

    Queue 方法 对应的 Deque 方法
    add(e) addLast(e)
    offer(e) offerLast(e)
    remove() removeFirst()
    poll() pollFirst()
    element() getFirst()
    peek() peekFirst()

    与队列类似,栈的 API 也时部分双端队列 API 换了了名字。

    Stack 方法 对应的 Deque 方法
    push(e) addFirst(e)
    pop() removeFirst()
    peek() peekFirst()

    Deque 的实现

    Deque 是线性结构,实现方式分类两类,一类基于数组,典型代表是 ArrayDeque;另一类基于链表,典型代表是 LinkedList。这两个典型代表的详细介绍参考下面两篇博客:

    ArrayDeque API 与算法分析
    LinkedList 分析

  • 相关阅读:
    Centos安装Nginx过程步骤详细解析
    查看是否已经安装nginx
    使用uwsgi --http :80 --wsgi-file test.py 在浏览器上无法访问
    uwsgi 常用参数
    Python生成requirements.txt方法
    快排
    绝对路径和相对路径
    perspective结合transform的3D效果
    mobile web 手机开发
    Date对象需要注意的点
  • 原文地址:https://www.cnblogs.com/robothy/p/14069064.html
Copyright © 2011-2022 走看看