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

  • 相关阅读:
    Poj 2017 Speed Limit(水题)
    Poj 1316 Self Numbers(水题)
    Poj 1017 Packets(贪心策略)
    Poj 1017 Packets(贪心策略)
    Poj 2662,2909 Goldbach's Conjecture (素数判定)
    Poj 2662,2909 Goldbach's Conjecture (素数判定)
    poj 2388 Who's in the Middle(快速排序求中位数)
    poj 2388 Who's in the Middle(快速排序求中位数)
    poj 2000 Gold Coins(水题)
    poj 2000 Gold Coins(水题)
  • 原文地址:https://www.cnblogs.com/ltc0504/p/15633149.html
Copyright © 2011-2022 走看看