Java数据结构——双端队列
双端队列(Deque)
双端队列是指允许两端都可以进行入队和出队操作的队列,其元素的逻辑结构仍是线性结构。将队列的两端分别称为前端和后端,两端都可以入队和出队。Deque继承自Queue接口,Deque的实现类是LinkedList、ArrayDeque、LinkedBlockingDeque,其中LinkedList是最常用的。
常用方法

简单实现
import java.util.Deque;
import java.util.LinkedList; public class MyDeque {
public static void main(String[] args) { Deque<Integer> deque = new LinkedList<Integer>();
deque.add(1);
deque.add(2);
deque.add(3); //查看队首元素
System.out.println("队首元素:"+deque.peek());
System.out.println("队列:"+deque); //从队首加元素(队列有容量限制时用,无则用addFirst)
deque.offerFirst(4);
System.out.println("队首加入元素后:"+deque);
//从队尾加入元素(队列有容量限制时用,无则用addLast)
deque.offerLast(5);
System.out.println("队尾加入元素后:"+deque); //offer()默认从队尾加入元素
deque.offer(6);
System.out.println("队尾加入元素后:"+deque); //移除并返回队首第一个元素,队列为空时,会抛出NoSuchElementException异常
deque.removeFirst();
System.out.println("移除队首第一个元素后:"+deque); //移除并返回队尾第一个元素,队列为空时,会抛出NoSuchElementException异常
deque.removeLast();
System.out.println("移除队尾第一个元素后:"+deque); //移除并返回队首第一个元素,队列为空时,返回null
deque.pollFirst();
System.out.println("移除队首第一个元素后:"+deque); //移除并返回队尾第一个元素,队列为空时,返回null
deque.pollLast();
System.out.println("移除队尾第一个元素后:"+deque); //获取不移除队首第一个元素.队列为空时,抛出NoSuchElementException
System.out.println("队首第一个元素:"+deque.getFirst());
System.out.println("获取队首第一个元素后:"+deque); //获取不移除队尾第一个元素.队列为空时,抛出NoSuchElementException
System.out.println("队尾第一个元素:"+deque.getLast());
System.out.println("获取队尾第一个元素后:"+deque); //获取不移除队首第一个元素.队列为空时,返回null
System.out.println("队首第一个元素:"+deque.peekFirst());
System.out.println("获取队首第一个元素后:"+deque); //获取不移除队尾第一个元素.队列为空时,返回null
System.out.println("队尾第一个元素:"+deque.peekLast());
System.out.println("获取队尾第一个元素后:"+deque); //循环获取元素并在队列移除元素
while(deque.size()>0){
System.out.println("获取元素为:"+ deque.pop()+" 并删除");
}
System.out.println("队列为:"+deque);
}
}
Java数据结构——双端队列的更多相关文章
- 6.基本数据结构-双端队列(Deque)
一.双端队列(Deque) - 概念:deque(也称为双端队列)是与队列类似的项的有序集合.它有两个端部,首部和尾部,并且项在集合中保持不变. - 特性:deque 特殊之处在于添加和删除项是非限制 ...
- 06 基本数据结构 - 双端队列(Deque)
一.双端队列(Deque) - 概念:deque(也称为双端队列)是与队列类似的项的有序集合.它有两个端部,首部和尾部,并且项在集合中保持不变. - 特性:deque 特殊之处在于添加和删除项是非限制 ...
- 六.基本数据结构-双端队列(Deque)
一.双端队列(Deque) - 概念:deque(也称为双端队列)是与队列类似的项的有序集合.它有两个端部,首部和尾部,并且项在集合中保持不变. - 特性:deque 特殊之处在于添加和删除项是非限制 ...
- 数据结构----双端队列Dque
双端队列的概念与数据结构 deque(也称为双端队列)是与队列类似的项的有序集合.它有两个端部,首部和尾部,并且项在集合中保持不变. deque 特殊之处在于添加和删除项是非限制性的.可以在前面或后面 ...
- Java数据结构——双端链表
//================================================= // File Name : FirstLastList_demo //------------ ...
- 自己动手实现java数据结构(四)双端队列
1.双端队列介绍 在介绍双端队列之前,我们需要先介绍队列的概念.和栈相对应,在许多算法设计中,需要一种"先进先出(First Input First Output)"的数据结构,因 ...
- java数据结构-09双端队列
一.相关概念: (Deque)双端队列能够在队头.队尾进行添加.删除等操作 二.接口设计: 三.代码实现 public class Deque<E> { private List< ...
- Java 集合深入理解(10):Deque 双端队列
点击查看 Java 集合框架深入理解 系列, - ( ゜- ゜)つロ 乾杯~ 什么是 Deque Deque 是 Double ended queue (双端队列) 的缩写,读音和 deck 一样,蛋 ...
- python 下的数据结构与算法---4:线形数据结构,栈,队列,双端队列,列表
目录: 前言 1:栈 1.1:栈的实现 1.2:栈的应用: 1.2.1:检验数学表达式的括号匹配 1.2.2:将十进制数转化为任意进制 1.2.3:后置表达式的生成及其计算 2:队列 2.1:队列的实 ...
随机推荐
- Java Servlet详解(体系结构+注解配置+生命周期)
Java Servlet详解(注解配置+生命周期) 什么是Servlet : (Server applet)? 顾名思义:服务端的小程序 Servlet只是一个接口,定义了Java被浏览器访问到(To ...
- 提取txt文本有效内容
原理: 1.使用足够多的垃圾邮件和非垃圾邮件的内容作为训练集 2.读取全部训练集 删除其中的干扰字符 [ ] ,* . 进行分词 删除长度为 1 的单个字符 3.统计全部训练集中每个有效词汇的出现次数 ...
- == 和 is 的区别
import copy a = ['a','b','c'] b = a #b和a引用自同一块地址空间 print("a==b :",a==b) print("a is b ...
- python数据可视化编程实战PDF高清电子书
点击获取提取码:3l5m 内容简介 <Python数据可视化编程实战>是一本使用Python实现数据可视化编程的实战指南,介绍了如何使用Python最流行的库,通过60余种方法创建美观的数 ...
- jersey简单总结与demo
参考链接:https://www.iteye.com/blog/dyygusi-2148029?from=singlemessage&isappinstalled=0 测试代码: https: ...
- Qt数据库 QSqlTableModel实例操作(转)
本文介绍的是Qt数据库 QSqlTableModel实例操作,详细操作请先来看内容.与上篇内容衔接着,不顾本文也有关于上篇内容的链接. Qt数据库 QSqlTableModel实例操作是本文所介绍的内 ...
- 安卓APP开发的初步了解
今天成功安装了Android Studio 并且对APP的开发框架结构进行了初步了解 如上图:app基本结构情况 下面来仔细解释一下各个方面目录的作用 首先 manifests目录:包含Android ...
- Python内置OS模块用法详解
大家好,从今天起早起Python将持续更新由小甜同学从初学者的角度学习Python的笔记,其特点就是全文大多由新手易理解的代码与注释及动态演示.刚入门的读者千万不要错过! 很多人学习python,不知 ...
- 标星7000+,这个 Python 艺术二维码生成器厉害了!
微信二维码,相信大家也并不陌生,为了生成美观的二维码,许多用户都会利用一些二维码生成工具. 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手 ...
- C语言学习笔记之原码反码补码
原码:就是我们自己看的,以及机器输出给我们看的 补码:机器永远是以补码的形式将数据保存在计算机中 正数: 原码=反码=补码 负数: 反码:原码的符号位不变,其他位取反 ,1变0 0变1 补码:机器 ...