栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 双端队列,队列,栈 --- Deque使用指南

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 双端队列,队列,栈 --- Deque使用指南

前言

前一段时间一直在Leetcode 刷题,看代码解析的时候发现大多数人用的都是Deque 来代替Stack,于是就产生了好奇.就学习了一下Deque的常用API.不学不知道一学吓一跳,原来Deque还有这么多功能.怕遗忘特此记录

Java官方推荐使用Deque替代Stack使用,Java堆栈Stack类已经过时.

Deque堆栈操作方法:push()、pop()、peek()。

一、Deque的是什么?


Deque是一个双端队列接口,继承自Queue接口.
Deque的实现类是linkedList、ArrayDeque、linkedBlockingDeque,但是一般常用linkedList实现接口

一般场景
linkedList 大小可变的链表双端队列,允许元素为 null
ArrayDeque 大下可变的数组双端队列,不允许 null并发场景
linkedBlockingDeque 如果队列为空时,获取操作将会阻塞,知道有元素添加 二、Deque的中定义的函数

Deque中接口定义的非常之多, Deque实现了双向队列,队列,和栈的功能,下面展示Deque三种常用实现

普通队列
Deque deque = new linkedList<>()
双端队列
Deque deque = new linkedList<>()
堆栈
Deque deque = new linkedList<>()

! 这有什么区别哇


没有区别,所以一个Deque在使用的时候你可以一会用栈的方法一会用队列的,只要你不怕被打

Deque 双向队列

Deque deque = new linkedList<>()

linkedList 实现 Deque 双端队列能够包含的元素数没有固定限制

Deque分别提供插入元素,删除元素以及检查元素,每一种都有两个返回值,一种返回特殊值,一种队列为空时返回异常,支持fast-fail

对应API

队列首元素 队列尾元素
抛出异常特殊值抛出异常特殊值
插入addFirst(e)offerFirst(e)addLast(e)offerLast(e)
删除removeFirst()pollFirst()removeLast()pollLast()
检查getFirst()peekFirst()getLast()peekLast()
Deque 队列

Deque deque = new linkedList<>()

Deque做队列使用时,因为其继承了Queue接口,如果你想直接使用Queue接口是可以的,也可以使用双端队列Api实现队列功能.
如下表所示

功能Queue,Deque通用方法Deque方法
插入(异常)add(e)addLast(e)
插入(特殊值)offer(e)offerLast(e)
删除(异常)remove()removeFirst()
删除(特殊值)poll()pollFirst()
返回队列首元素(异常)element()getFirst()
返回队列首元素(特殊值)peek()peekFirst()
Deque 栈

Deque deque = new linkedList<>()

双端队列也可用作 栈。应优先使用此接口而不是遗留 Stack 类。在将双端队列用作堆栈时,元素被推入双端队列的开头并从双端队列开头弹出.如果你想直接使用Stack的Api也是可以的.
如下表所示:

功能Stack,Deque通用方法Deque方法
入栈)push(e)addFirst(e)
出栈pop()removeFirst()
查询栈首元素peek()peekFirst()
总结

Deque是一个非常纯洁全面的接口类,高效.可以在之后的任务中多尝试使用Deque.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/769220.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号