zoukankan      html  css  js  c++  java
  • java中的Stack、Queue、Deque用法

    1.Stack(LIFO,头部添加、头部删除、后进先出)

    1.1 Stack原理

    栈是Vector的一个子类,它实现了一个标准的后进先出的栈。
    image
    Vector 是 AbstractList 子类
    Vector 实现了 List 接口
    ArrayList 是 AbstractList 子类
    ArrayList 和 Vector 关系总算清楚了,他们是哥们关系,并且都继承自 AbstractList
    从上面所有的分析,我们知道了Stack 本质也是一个 List。其具备 List 所有方法

    1.2 Stack的使用

    堆栈只定义了默认构造函数,用来创建一个空栈。
    堆栈除了包括由Vector定义的所有方法,也定义了自己的一些方法。
    初始化:Stack stack=new Stack();
    image

    2.Queue(FIFO,尾部添加、头部删除、先进先出)

    2.1 Queue原理

    Java集合中的Queue继承自Collection接口,Deque,LinkedList,PriorityQueue,BlockingQueue等类都实现了它。
    Queue 用来存放等待处理元素的集合,这种场景一般用于缓冲、并发访问。

    2.1 Queue使用

    除了继承 Collection 接口的一些方法,Queue 还添加了额外的添加、删除、查询操作。
    image
    add:增加一个元索,如果队列已满,则抛出一个IIIegaISlabEepeplian异常
    offer:添加一个元素并返回true,如果队列已满,则返回false

    remove:移除并返回队列头部的元素,如果队列为空,则抛出一个NoSuchElementException异常
    poll:移除并返问队列头部的元素,如果队列为空,则返回null

    element:返回队列头部的元素,如果队列为空,则抛出一个NoSuchElementException异常
    peek:返回队列头部的元素,如果队列为空,则返回null

    isEmpty:判断队列是否为空

    3.Deque(双端队列,头部尾部添加、头部尾部删除,Java官方推荐使用Deque替代Stack)

    3.1 Deque原理

    Deque是一个双端队列接口,继承自Queue接口,Deque的实现类是LinkedList、ArrayDeque、LinkedBlockingDeque,其中LinkedList是最常用的。
    大多数 Deque 实现对于它们能够包含的元素数没有固定限制,但此接口既支持有容量限制的双端队列,也支持没有固定大小限制的双端队列。

    3.2 Deque使用

    此接口定义在双端队列两端访问元素的方法。提供插入、移除和检查元素的方法。每种方法都存在两种形式:一种形式在操作失败时抛出异常,另一种形式返回一个特殊值(null 或 false,具体取决于操作)。插入操作的后一种形式是专为使用有容量限制的 Deque 实现设计的;在大多数实现中,插入操作不能失败。
    image
    image
    image

  • 相关阅读:
    java native方法
    linux free命令
    gdb使用
    java锁——wait,notify,synchronized
    java面试——问题回溯
    (转)每天一个linux命令(44):top命令
    java面试——jvm
    java面试——多线程
    数据库面试总结
    CMakeLists.txt使用
  • 原文地址:https://www.cnblogs.com/ltc0504/p/15633149.html
Copyright © 2011-2022 走看看