当前位置: 首页 > article >正文

双端队列 【Deque】

参考链接

JAVA 栈,为什么要使用Deque,而不推荐使用Stack,Deque中ArrayDeque与LinkedList的区别,Deque方法详解_java 栈为什么用deque-CSDN博客

简介

可以理解成,双端队列就是可以在队头 和 队尾进行操作,比如:查看队头队尾元素,弹出队头队尾元素,或者从队头和队尾插入元素,那也就意味着他可以用来当做 队列 的数据结构使用

用法

队列

先进先出的线性数据结构

入队

方法

作用

void addLast(E e)

将指定的元素插入此双端队列的后面 ,空间不足抛异常

boolean offerLast(E e)

将指定的元素插入此双端队列的后面,空间不足返回false

boolean add(E e)

将指定的元素插入此双端队列的后面,空间不足抛异常

boolean offer(E e)

将指定的元素插入此双端队列的后面,空间不足返回false

出队

方法

作用

E removeFirst()/E remove()/E pop()

检索并删除第一个元素,为空时抛出异常

E pollFirst()/ E poll()

检索并删除第一个元素 ,为空时返回null

查看队头元素

方法

作用

E getFirst()/E element()/E pop()

只看第一个元素 ,不出来,为空就抛异常

E peekFirst()/ E peek()

只看第一个元素 ,不出来,为空时返回null

代码案例

public class QueueTest {

    public static void main(String[] args) {
        Deque<Integer> queue = new LinkedList<>();
        // 分别入队 1,2,3
        queue.offer(1);
        queue.offer(2);
        queue.offer(3);
        // 查看元素
        System.out.println(queue.peek());
        // 出队
        System.out.println(queue.poll());
        // 遍历
        for (Integer i : queue) {
            System.out.println(i);
        }
    }

}
1
1
2
3

先进后出的线性数据结构

入栈

方法

作用

addFirst(E e)

将指定的元素插入此双端队列的前面 ,空间不足抛异常

offerFirst(E e)

将指定的元素插入此双端队列的前面 ,空间不足插入失败返回回false

push(E e)

将指定的元素插入此双端队列的前面 ,空间不足抛异常

出栈

方法

作用

E removeFirst()/E remove()/E pop()

检索并删除第一个元素,为空时抛出异常

E pollFirst()/ E poll()

检索并删除第一个元素 ,为空时返回null

查看栈顶元素

方法

作用

E getFirst()/E element()/E pop()

只看第一个元素 ,不出来,为空就抛异常

E peekFirst()/ E peek()

只看第一个元素 ,不出来,为空时返回null

代码案例

public class StackTest {

    public static void main(String[] args) {
        Deque<Integer> stack = new LinkedList<>();
        // 分别入栈 1,2,3
        stack.push(1);
        stack.push(2);
        stack.push(3);
        // 查看栈顶元素
        System.out.println(stack.peek());
        // 出栈
        System.out.println(stack.poll());
        // 遍历
        for (Integer i : stack) {
            System.out.println(i);
        }
    }

}
3
3
2
1


http://www.kler.cn/a/369997.html

相关文章:

  • ceph基本概念,架构,部署(一)
  • 【RabbitMQ 消息丢失常见情况分析】
  • 【面试总结】FFN(前馈神经网络)在Transformer模型中先升维再降维的原因
  • sentinel微服务保护
  • docker 部署confluence
  • 计算机组成原理——数据表示(二)
  • 论文概览 |《Computers, Environment and Urban Systems》2024.10 Vol.113
  • npm 包的命名空间介绍,以及@typescript-eslint/typescript-eslint
  • Axios 请求超时设置无效的问题及解决方案
  • 【乐吾乐大屏可视化组态编辑器】图表
  • C++——写一函数,求一个字符串的长度。在main函数中输人字符串,并输出其长度。用指针或引用方法处理。
  • ArcGIS 10.8 安装教程(含安装包)
  • uniapp基础笔记
  • Java与C++:比较与对比
  • 网上商城设计小程序ssm+论文源码调试讲解
  • AI视频开源模型mochi部署-云服务器linux环境-源码部署-无量化-免魔法免翻墙
  • uniapp app.onshow 和 onMounted一样用吗
  • OutLook for Windows(New) 滚蛋吧
  • EDA --软件开发之路
  • 了解什么是机器学习、深度学习和深度卷积神经网络
  • 本地服务器上搭建PPTist轻松实现跨地域的在线PPT制作与演示
  • 16.网工入门篇--------介绍下网络服务及应用
  • uniapp的IOS证书申请(测试和正式环境)及UDID配置流程
  • webGlL变量的声明与使用
  • Python | Leetcode Python题解之第518题零钱兑换II
  • 【计算机网络三】一篇文章详解TCP/IP四层协议簇