JAVA学习-集合.使用Deque

       Deque是Java集合框架中的一个双端队列接口。Deque可以在两端插入和删除元素,并且可以作为队列(先进先出)或栈(后进先出)使用。Deque接口继承自Queue接口,并添加了一些额外的方法。

一、Deque的特点:

1. 可以在队列的两端进行插入和删除操作,即头部和尾部。

2. 元素可以是任意类型,包括null。

3. 可以用作队列(先进先出)或栈(后进先出)。

4. Deque接口有多个实现类,如ArrayDeque和LinkedList。

二、Deque的常用方法:

1. addFirst(E e):在队列头部插入元素。

2. addLast(E e):在队列尾部插入元素。

3. offerFirst(E e):在队列头部插入元素,如果队列满则返回false。

4. offerLast(E e):在队列尾部插入元素,如果队列满则返回false。

5. removeFirst():删除并返回队列头部的元素。如果队列为空则抛出异常。

6. removeLast():删除并返回队列尾部的元素。如果队列为空则抛出异常。

7. pollFirst():删除并返回队列头部的元素。如果队列为空则返回null。

8. pollLast():删除并返回队列尾部的元素。如果队列为空则返回null。

9. getFirst():返回队列头部的元素,但不删除。如果队列为空则抛出异常。

10. getLast():返回队列尾部的元素,但不删除。如果队列为空则抛出异常。

11. peekFirst():返回队列头部的元素,但不删除。如果队列为空则返回null。

12. peekLast():返回队列尾部的元素,但不删除。如果队列为空则返回null。

三、示例代码:

import java.util.Deque;
import java.util.ArrayDeque;
public class DequeExample {public static void main(String[] args) {Deque<String> deque = new ArrayDeque<>();// 在队列头部插入元素deque.addFirst("A");deque.addFirst("B");deque.addFirst("C");// 在队列尾部插入元素deque.addLast("X");deque.addLast("Y");deque.addLast("Z");// 获取队列头部和尾部的元素System.out.println(deque.getFirst()); // 输出CSystem.out.println(deque.getLast()); // 输出Z// 删除队列头部和尾部的元素deque.removeFirst();deque.removeLast();// 遍历队列for (String element : deque) {System.out.println(element);}}
}

输出结果:

Z

A

Y

X

C

B

四、说明:

       上述代码演示了如何使用ArrayDeque实现Deque的功能。首先,在队列头部插入元素A、B、C,然后在队列尾部插入元素X、Y、Z。接着,使用getFirst()和getLast()方法获取队列头部和尾部的元素。然后,使用removeFirst()和removeLast()方法删除队列头部和尾部的元素。最后,使用for循环遍历队列并打印出元素。注意,在遍历过程中,元素的顺序是从头部到尾部。

(文章为作者在学习java过程中的一些个人体会总结和借鉴,如有不当、错误的地方,请各位大佬批评指正,定当努力改正,如有侵权请联系作者删帖。)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/687535.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【算法分析与设计】最大层内元素和

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;算法分析与设计 ⛺️稳中求进&#xff0c;晒太阳 题目 给你一个二叉树的根节点 root。设根节点位于二叉树的第 1 层&#xff0c;而根节点的子节点位于第 2 层&#xff0c;依此类推。 请返…

Python在生物信息学中的应用:让你的程序运行得更快

程序运行太慢&#xff0c;想要提速&#xff0c;但不使用复杂的技术如 C 扩展或 JIT 编译器。 解决方案 程序优化的第一准则是“不要优化”&#xff0c;第二准则是“不要优化那些不重要的部分”。基于这两个原则&#xff0c;如果你的程序运行得很慢&#xff0c;你得先找出影响性…

Mac相关问题

Mac 更新node版本 第一步&#xff0c;先查看本机node.js版本&#xff1a; node -v 第二步&#xff0c;清除node.js的cache&#xff1a; sudo npm cache clean -f 第三步&#xff0c;安装 n 工具&#xff0c;这个工具是专门用来管理node.js版本的&#xff0c;别怀疑这个工具…

Qt的安装

下载安装包 我们选择Open Source的版本。 可以从https://www.qt.io/download-open-source直接下载最新版本&#xff0c;对于想要选择特定版本&#xff0c;或者尝试beta版功能的用户&#xff0c;也可以从https://download.qt.io选择自己需要的版本。 如果你的网速可以的话&am…

PCL库学习及ROS使用

PCL库学习 c_cpp_properties.json {"configurations": [{"name": "Linux","includePath": ["${workspaceFolder}/**","/usr/include","/usr/local/include"],"defines": [],"compiler…

2.14日学习打卡----初学Zookeeper(一)

2.14日学习打卡 目录: 2.14日学习打卡Zookeeper概念一. 集中式到分布式单机架构集群架构什么是分布式三者区别 二. CAP定理分区容错性一致性可用性一致性和可用性的矛盾一致性和可用性如何选择 三. 什么是Zookeeper分布式架构Zookeeper从何而来Zookeeper介绍 四. 应用场景数据发…

第六节笔记:OpenCompass 大模型评测

视频链接&#xff1a;https://www.bilibili.com/video/BV1Gg4y1U7uc/?spm_id_from333.788&vd_source3bbd0d74033e31cbca9ee35e111ed3d1

上位机图像处理和嵌入式模块部署(Halcon借鉴与客户学习)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 对于很多学院派的同学来说&#xff0c;他们对市场的感觉一般是比较弱的。如果写一个软件的话&#xff0c;或者说开发一个项目的话&#xff0c;他们…

2024 CKS 题库 | 9、网络策略 NetworkPolicy

不等更新题库 CKS 题库 9、网络策略 NetworkPolicy Task 创建一个名为 pod-restriction 的 NetworkPolicy 来限制对在 namespace dev-team 中运行的 Pod products-service 的访问。 只允许以下 Pod 连接到 Pod products-service namespace qaqa 中的 Pod位于任何 namespace&…

vue-自定义创建项目(六)

为什么要自定义创建项目&#xff1f; 因为VueCli默认创建的项目不能够满足我们的要求&#xff0c;比如默认的项目中没有帮我们集成路由&#xff0c;vuex&#xff0c;eslink等功能。 默认项目 自定义创建项目 流程&#xff1a; 创建项目命令&#xff1a;vue create custom_dem…

亚马逊测评:揭秘做号的“花招”与“猫腻”,如何避免被割韭菜?

亚马逊测评行业如今如火如荼&#xff0c;吸引了众多朋友投身其中。然而&#xff0c;这个行业也是五花八门&#xff0c;什么样的人和公司都有&#xff0c;让人眼花缭乱。作为卖家&#xff0c;如何选择靠谱的测评服务商是一门必修课&#xff1b;而对于初学者&#xff0c;如何入门…

SHERlocked93 的 2021 年终总结

我还是和往年一样&#xff0c;总结发的又晚了一点&#xff0c;为什么又发这么晚呢&#xff0c;因为懒 年终总结 疫情之后时间时间过的太快了&#xff0c;不知道是不是只有我这样感觉。 四五月份去兰州玩了下&#xff08;其实是出差&#xff09;&#xff0c;终于看到了黄土高原&…

2024年蓝牙耳机推荐,值得入手的蓝牙耳机排行榜

​随着生活水平的提高&#xff0c;蓝牙耳机已经成为了许多人日常生活中不可或缺的数码产品。无论是听音乐、看视频还是打电话&#xff0c;蓝牙耳机都为我们提供了极大的便利。然而&#xff0c;面对市场上众多的蓝牙耳机品牌和型号&#xff0c;许多人感到无所适从。所以&#xf…

Linux第58步_备份busybox生成rootfs根文件系统

备份busybox生成rootfs根文件系统 打开终端 输入“ls回车” 输入“cd linux/回车” 输入“ls回车”&#xff0c;产看“linux”目录下的文件和文件夹 输入“cd nfs/回车”&#xff0c;切换到“nfs”目录 输入“ls回车”&#xff0c;产看“nfs”目录下的文件和文件夹 输入…

力扣OJ题——旋转数组

题目&#xff1a;189.旋转数组 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数 思路一&#xff1a; 1.每次挪动旋转1位&#xff08;用tmp将最后一位存起来&#xff0c;其余所有数据向后移&#xff0c;然后将tmp放在第一个位…

RabbitMQ配置消息转换器

1. 默认转换器 Test public void testSendMap() throws InterruptedException {// 准备消息Map<String, Object> msg new HashMap<>();msg.put("name", "harry");msg.put("age", 21);// 发送消息rabbitTemplate.convertAndSend(&q…

无电池设备物联网的未来

在物联网(IoT)世界中&#xff0c;一种改变游戏规则的趋势正在出现&#xff0c;它就是无电池物联网。想象一下不需要普通电池的智能设备。这些被称为环境物联网(A-IoT)的独特小工具正在改变游戏规则。它们不再使用老式电池&#xff0c;而是通过无线电信号、光、振动和热量获取能…

Python一级考试笔记

Python一级考试笔记【源源老师】 前置知识&#xff1a;&#xff08;了解即可&#xff09; Python常见的几种编程环境&#xff1a;IDLE&#xff08;自带&#xff09;、Visual Studio Code、Jupyter、pyCharm&#xff1b; python版本&#xff1a;python3 和 python2&#xff08;…

STM32学习笔记(七) —— DMA传输(MTM)

DMA&#xff0c;全称是Direct Memory Access&#xff08;直接内存访问&#xff09;。可以在存储器和存储器之间或者外设和存储器之间传输数据&#xff0c;而不需要CPU的干预&#xff0c;这样可以节省CPU的资源&#xff0c;提高工作效率。 1.功能框图 STM32F103RCT6有两个DMA控…

东方博宜 1057. 能被5整除且至少有一位数字是5的所有整数的个数

东方博宜 1057. 能被5整除且至少有一位数字是5的所有整数的个数。 思路&#xff1a; 1 首先输入n 2 用for循环遍历1-n中间的数 3 每一个数进行对5取余的运算&#xff0c;看是否能被5整除 4 在整除的基础上&#xff0c;看这个数的各个数位上是否有5&#xff0c;这一步将数对10取…