筱天考研加油 ------ 博客首页

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

posted @ 2021-12-02 14:44  林天成  阅读(934)  评论(0编辑  收藏  举报