Java 数据结构 队列之双端队列 常用方法 示例代码 及其实现

news/2025/1/19 23:54:25/

目录

常用方法

示例代码

常见实现


Java中的双端队列(Deque,Double Ended Queue)是一种队列,它允许在队列的两端插入和删除元素。与普通队列(FIFO)不同,双端队列的元素可以从队列的两端进行添加或删除。

Java提供了Deque接口,它扩展了Queue接口,常见的实现类有ArrayDequeLinkedList

常用方法

Deque接口支持以下常见操作:

  • 添加元素
    • addFirst(E e):将元素添加到队列的前端。
    • addLast(E e):将元素添加到队列的末端。
  • 删除元素
    • removeFirst():删除队列前端的元素。
    • removeLast():删除队列末端的元素。
    • pollFirst():删除并返回队列前端的元素(如果队列为空返回null)。
    • pollLast():删除并返回队列末端的元素(如果队列为空返回null)。
  • 查看元素
    • getFirst():查看队列前端的元素。
    • getLast():查看队列末端的元素。
    • peekFirst():查看队列前端的元素(如果队列为空返回null)。
    • peekLast():查看队列末端的元素(如果队列为空返回null)。

示例代码

java复制代码
import java.util.Deque;
import java.util.ArrayDeque;public class DequeExample {public static void main(String[] args) {Deque<Integer> deque = new ArrayDeque<>();// 添加元素deque.addFirst(10); // 队头添加元素deque.addLast(20);  // 队尾添加元素deque.addLast(30);// 查看元素System.out.println("队头元素: " + deque.getFirst());  // 输出 10System.out.println("队尾元素: " + deque.getLast());   // 输出 30// 删除元素System.out.println("删除队头元素: " + deque.removeFirst()); // 输出 10System.out.println("删除队尾元素: " + deque.removeLast());  // 输出 30// 再次查看元素System.out.println("队头元素: " + deque.getFirst());  // 输出 20}
}

常见实现

  1. ArrayDeque:基于数组实现的双端队列,性能较好,适用于大多数场景,不支持null元素。
  2. LinkedList:基于双向链表实现,提供较高的灵活性,支持更多的操作,但相较于ArrayDeque性能略低。

你可以根据不同的需求选择使用这两个实现。


http://www.ppmy.cn/news/1564522.html

相关文章

wireshark 网络分析工具

✍作者&#xff1a;柒烨带你飞 &#x1f4aa;格言&#xff1a;生活的情况越艰难&#xff0c;我越感到自己更坚强&#xff1b;我这个人走得很慢&#xff0c;但我从不后退。 &#x1f4dc;系列专栏&#xff1a;网络安全从菜鸟到飞鸟的逆袭 目录 一、网络截获数据包的基础1、以太网…

【2024博客之星评选】走过这一年,踏上新阶梯

个人主页~ 非常荣幸我能通过审核进入到TOP300的年度评选当中&#xff0c;作为一名大二的学生&#xff0c;这对我来说不仅是一次激励&#xff0c;更是一个新的起点&#xff0c;在这里我将以回顾的方式讲述一下这一年在CSDN中走过的路 走过这一年 零、引言一、初遇二、成长三、机…

晨辉面试抽签和评分管理系统之十二:如何让同一批、不同组别的面试考生抽到连续的号码?

晨辉面试抽签和评分管理系统&#xff08;下载地址:www.chenhuisoft.cn&#xff09;是公务员招录面试、教师资格考试面试、企业招录面试等各类面试通用的考生编排、考生入场抽签、候考室倒计时管理、面试考官抽签、面试评分记录和成绩核算的面试全流程信息化管理软件。提供了考生…

阿里云通义实验室自然语言处理方向负责人黄非:通义灵码2.0,迈入 Agentic AI

通义灵码是基于阿里巴巴通义大模型研发的AI 智能编码助手&#xff0c;在通义灵码 1.0 时代&#xff0c;我们针对代码的生成、补全和问答&#xff0c;通过高效果、低时延&#xff0c;研发出了国内最受欢迎的编码助手。 在通义灵码 2.0 发布会上&#xff0c;阿里云通义实验室自然…

python中自动化playwright录制功能跳过繁琐的系统登录操作

1.在自己的终端上执行下面的命令会&#xff0c;生成录制页面 playwright codegen --save-storageauth.json2.在录制页面中&#xff0c;仔细地输入自己需要登录的网址。如果该网址需要输入账号和密码才能登录&#xff0c;那么请准确地输入相应的账号和密码。如果有验证码的情况&…

替换数据库不是谁好就用谁

哪个数据库优秀不一定都能达成一致的意见 在1.4日的PG上海生态大会上&#xff0c;我发言大致是&#xff1a;每个人都有自己主观意愿。比如MySQL和PG的争论&#xff0c;无论线上还是线下都是难解难分。主观意愿定了&#xff0c;很难改变。即使心里认&#xff0c;但是嘴上也不说…

STM32 FreeRTOS 信号量

信号量的简介 reeRTOS中的信号量是一种用于任务间同步和资源管理的机制。信号量可以是二进制的&#xff08;只能取0或1&#xff09;也可以是计数型的&#xff08;可以是任意正整数&#xff09;。信号量的基本操作包括“获取”和“释放”。 比如动车上的卫生间&#xff0c;一个…

PyTorch深度学习实践【刘二大人】之卷积神经网络

视频地址10.卷积神经网络&#xff08;基础篇&#xff09;_哔哩哔哩_bilibili 网络中全部用的线形层串行连接起来&#xff0c;我们叫做全连接网络。输入与输出任意两节点间都有权重&#xff0c;这样的线形层叫做全连接层 卷积神经网络的基本特征&#xff0c;先特征提取再进行分…