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

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

目录

常用方法

示例代码

常见实现


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());  // 输出 10
        System.out.println("队尾元素: " + deque.getLast());   // 输出 30

        // 删除元素
        System.out.println("删除队头元素: " + deque.removeFirst()); // 输出 10
        System.out.println("删除队尾元素: " + deque.removeLast());  // 输出 30

        // 再次查看元素
        System.out.println("队头元素: " + deque.getFirst());  // 输出 20
    }
}

常见实现

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

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


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

相关文章:

  • linux下的NFS和FTP部署
  • 01.17周五F34-Day58打卡
  • Vue篇-07
  • 【设计模式-结构型】装饰器模式
  • SurfaceFlinger代码笔记
  • Subprocess check_output returned non-zero exit status 1
  • vue+arcgis api for js实现地图经纬网格显示
  • 大模型WebUI:Gradio全解11——Chatbot:融合大模型的多模态聊天机器人(6)
  • Qt 使用共享内存的方式限制程序单一启动
  • 深入内核讲明白Android Binder【二】
  • 【JVM-8】使用 IBM Thread and Monitor Dump Analyzer for Java (TMDA) 分析线程转储
  • 深入了解卷积神经网络(CNN):图像处理与深度学习的革命性技术
  • 修复5.0.0r 64位版本浏览器和一些库找不到的问题
  • Flink (九):DataStream API (六) Process Function
  • 如何在 Google Cloud Shell 中使用 Visual Studio Code (VS Code)?
  • Spring Boot与MyBatis
  • FPGA:Quartus软件与操作系统版本对照表
  • Java 开发常见面试题3
  • ORB-SLAM2源码学习: Frame.cc: cv::Mat Frame::UnprojectStereo将某个特征点反投影到三维世界坐标系中
  • “云计算+中职”:VR虚拟仿真实训室的发展前景
  • VS2022——WPF初始化和控件Nmae虚假报错
  • 在 JIRA 中利用仪表盘功能生成 Bug 相关图表的手册
  • 无人机(Unmanned Aerial Vehicle, UAV)路径规划介绍
  • Qotom Q10922H6 N100多网口无风扇迷你电脑2个10G和4个2.5G网口
  • Android SystemUI——NavigationBar导航栏(七)
  • 39.【4】CTFHUB web sql 布尔注入