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:队列的实 ...
随机推荐
- 哇咔咔干货来啦:PowerJob 原理剖析之 Akka Toolkit
本文适合有 Java 基础知识的人群 作者:HelloGitHub-Salieri HelloGitHub 推出的<讲解开源项目>系列. Akka is a toolkit for bui ...
- JVM笔记-GC常用参数设置
GC常用参数 -Xmn -Xms -Xmx -Xss 年轻代 最小堆 最大堆 栈空间, -Xms -Xmx 一般设置成一样大小, -XX:+UseTLAB 使用TLAB,默认打开 -XX:+Print ...
- 初学用记事本运行java报错:找不到或无法加载主类解决方法,部分出错解决办法
刚开始学习java的人第一个程序可能通过记事本运行,当中间可能会会出现各种错误,我在下面间可能解决出现的问题 1. java环境变量没有安装好 以我的win10系统为例,在装好相应的jdk后,环境变量 ...
- PHP soundex() 函数
实例 计算 "Hello" 的 soundex 键: <?php高佣联盟 www.cgewang.com$str = "Hello";echo sound ...
- PHP chop() 函数
实例 移除字符串右侧的字符: <?php$str = "Hello World!";高佣联盟 www.cgewang.comecho $str . "<br& ...
- 【问题记录】springMVC @Valid使用不生效问题
问题描述 在网上找到如何使用@Valid注解后,就把用到的配置和jar包加上,然后测试发现一直不生效.下面是配置及解决方法 配置 1.引入依赖 2.添加相应的配置(springmvc配置文件) < ...
- scala---lazy
scala中用lazy定义的变量叫做惰性变量,会实现延迟加载.惰性变量只能是不可变的变量.并且只有在调用惰性变量的时候才会被初始化. class Test1 { } object Test1 { de ...
- 文件操作之File 和 Path
转载:https://blog.csdn.net/u010889616/article/details/52694061 Java7中文件IO发生了很大的变化,专门引入了很多新的类: import j ...
- 构建一个拥有sshd服务的docker镜像
不直接描述结果,通过一个过程探究如何写一个 Dockerfile 一.环境 虚拟机CentOS7.4,Docker1.13.1 二.尝试步骤 1.下载基础镜像 docker pull alpine:3 ...
- excel-格式处理
问题[1]:将excl中数据导出txt,并且每列之间距离一个空格 在C1(任意空列) 输入=A1&" "&B1" "中间是一个半角英文空格下拉 ...