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:队列的实 ...
随机推荐
- It还是高薪行业不?—软件测试
It还是高薪行业不?—软件测试 谁都希望拿高薪,但是并不是所有人.所有地方都能的:甚者培训出来还不能就业的大有人在,也不是所有人都适合培训后就业(年龄.学历.专业.期望就业地点.不同行业转行还是有很大 ...
- 每日一道 LeetCode (1):两数之和
引言 前段时间看到一篇刷 LeetCode 的文章,感触很深,我本身自己上大学的时候,没怎么研究过算法这一方面,导致自己直到现在算法都不咋地. 一直有心想填补下自己的这个短板,实际上又一直给自己找理由 ...
- Redis系列(九):Redis的事务机制
提到事务,相信大家都不陌生,事务的ACID四大特性,也是面试时经常问的,不过一般情况下,我们可能想到的是传统关系型数据库的事务,其实,Redis也是提供了事务机制的,本篇博客就来讲解下Redis的事务 ...
- Mybatis Plus中的lambdaQueryWrapper条件构造图介绍
- 将"089,0760,009"变为 89,760,9
remove_zeros = lambda s: ','.join(map(lambda sub: str(int(sub)), s.split(','))) remove_zeros("0 ...
- 再见了Antirez永远的Redis之神
其实antirez(Redis作者)退出Redis维护一发布我就在很多咨询网站上面看到了,当时也没太多感慨. 今天比较有空想去看看霉霉Twitter的,然后看到了antirez,我就又一次回顾了他的退 ...
- Servlet容器启动过程
参考:https://blog.csdn.net/fredaq/article/details/9366043 一.概念 所谓Servlet容器其实说白了是符合Servlet规范的Java web容器 ...
- Centos8最小化部署安装OpenStack Ussuri
#!/bin/bash #Centos8最小化部署安装OpenStack Ussuri #共两台主机,分别是一台控制节点,一台计算节点 #.控制节点内存4096M.双网卡,分别为eth0:10.0.0 ...
- linux查询操作系统信息,CPU物理个数,CPU核心数,逻辑CPU数,内存信息查询,硬盘信息查询
目录 一.前言 二.关于服务器基本配置 2.1 操作系统基本配置查询 2.2 CPU基本配置查询 2.3 内存基本配置查询 2.4 硬盘基本配置查询 一.前言 当我们接手了一台或者几台服务器的时候 ...
- javascript逻辑运算与循环笔记
短路运算(逻辑中断) 1.短路运算的原理:当有多个表达式(值)时,左边的表达式值可以确定结果的时候就不再继续运算右边的表达式的值 2.逻辑与 && 如果 ...