• 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 分析

  • 相关阅读:
    volatile 和 mutable 关键字
    字符串第一个只出现一次的字符
    学一下HDFS,很不错(大数据技术原理及应用)
    把数组排成最小的数
    求第K大的数字
    数组中超过一半的数字
    打印字符的任意排列
    实时推荐系统架构
    带有任意指向指针的链表进行复制
    surfaceflinger中各个layer的排序
  • 原文地址:https://www.cnblogs.com/robothy/p/14069064.html
Copyright © 2020-2023  润新知