IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 【Java 数据结构及算法实战】系列 013:Java队列07——双端队列Deque -> 正文阅读

[数据结构与算法]【Java 数据结构及算法实战】系列 013:Java队列07——双端队列Deque

双端队列(Deque),顾名思义是可以在队列的两端插入和移除元素的特殊队列。

Java提供了java.util.Deque<E>接口以提供对双端队列的支持。该接口是Java Collections Framework的一个成员。

1.???Deque的方法

这个java.util.Deque<E>接口接口定义了访问Deque两端元素的方法,包括插入、删除和检查元素的方法。这些方法都以两种形式存在:

l??一种是如果操作失败则抛出异常;

l??另一种是返回一个特殊值(根据操作的不同返回null或false)。

后一种形式的插入操作是专门为容量受限的Deque实现而设计的。在大多数实现中,插入操作不会失败。

这些方法总结如下:

Deque方法总结

?? ? ?? ?? ?? ? ? ?? ?? ?? ?? ?? ? ? ?? ?? ?? ?? ?? ? ? ?? ?? ?? ?? ?? ? ? ?? ?? ?? ?? ??

?

队首

?

队尾

?

抛异常

?

特殊值

?

抛异常

?

特殊值

?

插入

?

addFirst(e)

?

offerFirst(e)

?

addLast(e)

?

offerLast(e)

?

移除

?

removeFirst()

?

pollFirst()

?

removeLast()

?

pollLast()

?

检查

?

getFirst()

?

peekFirst()

?

getLast()

?

peekLast()

2.???Deque用作队列

Deque扩展了Queue接口。这意味着,当Deque作为队列使用时,拥有FIFO行为的结果。元素添加在Deque的末尾,并从队首处删除。从Queue接口继承的方法与Deque方法完全等效,如下表所示:

Queue和Deque方法的比较

?? ? ? ?? ?? ? ? ?? ?? ? ? ?? ?? ? ? ?? ?? ? ? ?? ??

?

Queue

?

Deque

?

add(e)

?

addLast(e)

?

offer(e)

?

offerLast(e)

?

remove()

?

removeFirst()

?

poll()

?

pollFirst()

?

element()

?

getFirst()

?

peek()

?

peekFirst()

3.???Deque用作栈

Deque也可以用作LIFO的栈。这个接口应该优先于旧版的Stack类使用。当一个Deque作为栈使用时,元素从Deque开始被推入并弹出。堆栈方法与Deque方法等效,如下表所示:

Stack和Deque方法的比较

?? ? ?? ?? ? ? ?? ?? ? ? ?? ?? ? ? ?? ??

?

Stack

?

Deque

?

push(e)

?

addFirst(e)

?

pop()

?

removeFirst()

?

peek()

?

getFirst()

请注意,当一个Deque用作一个队列或堆栈时,peek()方法同样有效。在这两种情况下,元素都是从Deque的队首开始的。

Deque接口提供了两种方法来移除内部元素,即removeFirstOccurrence和removeLastOccurrence。?与List接口不同,此Deque不提供对元素的索引访问支持。

尽管Deque实现不是严格要求禁止插入空元素,但是强烈建议任何允许空元素的Deque实现的用户不要利用插入空元素的能力。这是因为null被各种方法用作一个特殊的返回值来指示Deque为空。

Deque实现通常不定义equals和hashCode方法的基于元素的版本,而是从类Object继承基于标识的版本。

4.???参考引用

本系列归档至《Java 数据结构及算法实战》:https://github.com/waylau/java-data-structures-and-algorithms-in-action
《数据结构和算法基础(Java 语言实现)》(柳伟卫著,北京大学出版社出版):https://item.jd.com/13014179.html

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-05-11 16:39:00  更:2022-05-11 16:41:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:41:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码