Array-Deque-Queue等的区别

news2024/11/19 18:43:59

🔎Deque(双端队列):

Deque 是 “double-ended queue” 的缩写,表示双端队列。它是一种可以在两端进行插入和删除操作的数据结构。你可以在队列的头部和尾部同时进行插入和删除操作。Deque 接口定义了这些操作的方法,如 addFirst、addLast、removeFirst、removeLast 等。Deque 接口的常见实现类有 ArrayDeque。

🌻实现方法:

addFirst(element):将指定元素插入双端队列的开头。
addLast(element):将指定元素插入双端队列的末尾。
removeFirst():检索并删除双端队列的第一个元素。
removeLast():检索并删除双端队列的最后一个元素。
peekFirst():检索但不删除双端队列的第一个元素。
peekLast():检索但不删除双端队列的最后一个元素。

🔎Queue:

Queue 是一种先进先出(FIFO)的数据结构,它定义了在一端插入元素,在另一端删除元素的操作。Queue 接口定义了这些操作的方法,如 offer、poll、peek 等。Queue 接口的常见实现类有 LinkedList 和 ArrayDeque。

🌻实现方法:

offer(element):将指定元素插入队列。
poll():检索并删除队列的第一个元素。
peek():检索但不删除队列的第一个元素。

🔎HashMap<Integer, Integer>:

HashMap 是 Java 中的一个散列表实现类,它实现了 Map 接口。HashMap 使用键值对的方式存储数据,可以通过键快速查找对应的值。在 HashMap 中,键和值都可以为任意对象,但在这个例子中,键和值都是整数类型。HashMap 具有高效的查找和插入操作,但不保证元素的顺序。

🌻实现方法:

put(key, value):将指定的值与指定的键关联起来。
get(key):检索与指定键关联的值。
remove(key):从HashMap中删除具有指定键的条目。
containsKey(key):如果HashMap包含指定的键,则返回true。

🔎Stack:

Stack 是 Java 中的栈数据结构实现类,它继承自 Vector 类。栈是一种后进先出(LIFO)的数据结构,它定义了在栈顶插入元素和删除栈顶元素的操作。在这个例子中,Stack 存储的元素类型为 TreeNode。

🌻实现方法:

push(element):将元素推入堆栈。
pop():从堆栈中移除并返回顶部的元素。
peek():返回堆栈顶部的元素,但不将其从堆栈中移除。
empty():如果堆栈为空,则返回true。

🔎ArrayList<>():

这是创建一个空的 ArrayList 对象的语法。通过该语法,可以实例化一个 ArrayList 对象用于存储元素。

🌻 实现方法:

ArrayList提供了类似动态数组的实现,支持方法如add(element)、remove(element/index)、get(index)、size()等。然而,在给出的示例中,并未指定使用的具体方法。

🔎LinkedList(链表):

链表是一种由节点组成的线性数据结构,每个节点都包含一个值和一个指向下一个节点的指针。
LinkedList内部使用双向链表实现,每个节点除了包含值之外,还包含指向前一个节点的指针。
由于LinkedList是双向链表,因此在任意位置插入和删除元素的时间复杂度为O(1)。
LinkedList支持快速的插入和删除操作,但访问元素的时间复杂度较高,为O(n),因为需要从头部或尾部开始遍历链表。

🔎ArrayList<>()与inkedList(链表)区别:

在这里插入图片描述
使用Queue queue = new LinkedList<>() 而不是 Queue queue = new ArrayList<>() 的原因是因为需要使用队列的特性,而LinkedList实现了Queue接口,是一个双端队列(Deque),适合用于实现队列的功能。

Queue接口是Java集合框架中定义的一种数据结构,它按照先进先出(FIFO)的原则管理元素。Queue提供了用于添加、删除和检查元素的方法,如offer()、poll()和isEmpty()。

LinkedList实现了Queue接口,并且在实现中使用双向链表来存储元素。它具有在队列的两端进行高效插入和删除操作的特性,因此非常适合用于实现队列。而ArrayList则是一个基于动态数组的实现,虽然也可以用于存储元素,但它的主要优势在于随机访问元素,而不是在队列中进行添加和删除操作。

🔎ArrayDeque(数组双端队列):

ArrayDeque是一种由可变大小数组实现的双端队列(即两端都可以进行插入和删除操作)。
ArrayDeque使用循环数组的方式存储元素,可以高效地在队列两端进行操作。
由于ArrayDeque使用数组实现,因此在随机访问元素时具有较快的速度,时间复杂度为O(1)。
ArrayDeque在添加和删除元素时具有较好的性能,时间复杂度为O(1)。
ArrayDeque不是线程安全的,如果需要在多线程环境中使用,可以考虑使用ConcurrentLinkedDeque。

🌻总结:

Deque 是一个具有队列和栈性质的双端队列。
ArrayDeque 是 Deque 接口的实现,底层使用数组实现的双端队列。
Queue 是一种先进先出的队列接口,定义了队列的基本操作。
HashMap 是一个哈希表实现的键值对存储容器。
new HashMap<>() 和 new Stack<>() 是创建空对象的语法。
Stack 是一个栈数据结构,遵循后进先出原则。
ArrayList 是一个动态数组实现的列表容器。

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

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

相关文章

国际博物馆日|科技与文化的碰撞:大势智慧助力博物馆赋能美好生活

近年来&#xff0c;我国博物馆事业蓬勃发展&#xff0c;而科技与文博领域的深度融合&#xff0c;将继续成为博物馆事业高质量发展的助推器。作为连接过去、现在、未来的桥梁和新时代文化交流与传播的窗口&#xff0c;博物馆不仅是保护和传承人类文明的重要殿堂&#xff0c;也是…

网络优化干扰培训讲解

一、系统外干扰 1、信号放大器 1、特征&#xff1a;RB尖峰突起(类似于互调干扰&#xff0c;极少数会形成宽频干扰。信号放大器为目前FDD频段主要干扰源 2、影响范围&#xff1a;周边站点 3、干扰来源&#xff1a;用户私装信号放大器、黑直放站. 4、原因分析&#xff1a;放…

javaIO流之字节流

目录 1、字节输出流&#xff08;OutputStream&#xff09;2、FileOutputStream类2.1FileOutputStrea 的构造方法2.2FileOutputStream 写入字节数据2.3FileOutputStream实现数据追加、换行 3、字节流入流&#xff08;InputStream&#xff09;4、FileInputStream类4.1FileInputSt…

介绍自己的产品时,常犯的那些错

最近的一个轻咨询客户&#xff0c;在“全面提升组织产品能力”的项目中&#xff0c;正处于内部自学的“读书会”环节。 为了“用以致学”&#xff0c;而不是“学以致用”地读书&#xff0c;我给他们出了一道看起来很简单的题——介绍一下自己手头正在负责的产品。 前几天&#…

Java枚举

Java枚举 &#x1f37a;1 背景及定义&#x1f37a;&#x1f9c3;2 使用&#x1f9c3;&#x1f964;3 枚举优点缺点&#x1f964;&#x1f375;4 枚举和反射&#x1f375;&#x1f377;4.1 枚举是否可以通过反射&#xff0c;拿到实例对象呢&#xff1f;&#x1f377; ☕️5 总结…

正负压力精密控制在隐形牙齿矫正器成型机中的应用

摘要&#xff1a;真空压力热成型技术作为一种精密成型工艺在诸如隐形牙套等制作领域得到越来越多的重视&#xff0c;其主要特点是要求采用高精度的正负压力控制手段来抵消重力对软化膜变形的影响以及精密控制成型膜厚度。本文提出了相应的改进解决方案&#xff0c;通过可编程的…

Greenplum数据库系统架构

Greenplum数据库系统架构 Greenplum是一个纯软件的MPP数据库服务器&#xff0c;其系统架构专门用于管理大规模分析型数据仓库或商业智能工作负载。从技术上讲&#xff0c;MPP无共享架构是指具有多个节点的系统&#xff0c;每个节点都有自己的内存、操作系统和磁盘&#xff0c;…

【天线专题】天线(Antenna)的理解

天线,英文名称是(Antenna),本义是指像蚂蚁、蜜蜂这样的小动物头顶上的触角。天线的作用就是将调制到射频频率的数字信号或模拟信号发射到空间无线信道,或从空间无线信道接收调制在射频频率上的数字或模拟信号。简单来说就是有发射和接收电磁波的功能。 所以两只蚂…

chatgpt赋能Python-python3_5怎么用

Python 3.5是什么? Python是一种高级编程语言&#xff0c;非常流行并广泛使用。Python3.5是Python编程语言的一个较新的版本&#xff0c;它具有许多新的功能和改进。Python 3.5已包含许多流行的Python框架。它可以用于各种任务&#xff0c;例如web开发&#xff0c;数据科学&a…

StableDiffusion模型发展历史

参考资料&#xff1a; 相应的github和huggingface LDM [github] StableDiffusion v1.1 ~ v1.4 [github] [huggingface] StableDiffusion v1.5 [huggingface] [github] StableDiffusion v2 v2.1 [github] [huggingface]   首先说一下&#xff0c;这篇文章的目的是让你清晰地了…

Django SQL注入漏洞 CVE-2022-28347

漏洞简介 在Django 2.2 的 2.2.28 之前版本、3.2 的 3.2.13 之前版本和 4.0 的 4.0.4 之前版本中的 QuerySet.deexplain() 中发现了SQL注入问题。这是通过传递一个精心编制的字典&#xff08;带有字典扩展&#xff09;作为**options参数来实现的&#xff0c;并将注入负载放置在…

[golang gin框架] 36.Gin 商城项目-RESTful API 设计指南,允许Cros跨域 ,提供api接口实现前后端分离,以及JWT的使用

一.RESTful API 设计指南 请看:Restful API 的接口规范 二.Gin 中配置服务器端允许跨域 github官方地址: https://github.com/gin-contrib/cors 在 main.go文件中配置跨域请求 代码如下: 在使用cors时,需要 引入该插件,先: import ( "github.com/gin-contrib/cors" )…

Cocos CreatorXR 1.2.0 今日发布,正式支持 WebXR ,并开启 MR 之路

去年九月&#xff0c;Cocos CreatorXR v1.0.1 版本支持了 VR 内容创作&#xff0c;成为率先支持 XR 的国产引擎&#xff0c;今年三月&#xff0c;Cocos CreatorXR v1.1.0 版本实现了对 AR 内容开发的支持。在完成基本功能的建设后&#xff0c;更多开发者开始尝试使用 Cocos Cre…

Linux内核oops panic简析

源码基于&#xff1a;Linux 5.4 0. 前言 内核异常的级别大致分为三个&#xff1a;BUG、oops、panic。 BUG 是指那些不符合内核的正常设计&#xff0c;但内核能够检测出来并且对系统运行不会产生影响的问题&#xff0c;比如在原子上下文中休眠&#xff0c;在内核中用 BUG 标识。…

case

[rootes3 data]# cat case11.sh #!/bin/bash. /etc/rc.d/init.d/functionsdisable_selinux(){sed -i s/SELNUXenforcing/SELINUXdisabled/ /etc/selinux/config action "SELINUX 已经禁用&#xff0c;重启生效" }disable_firewalld(){ systemctl disable --now firew…

chatgpt赋能Python-python3_9_1怎么打开

Python 3.9.1 使用指南&#xff1a;如何打开 Python 3.9.1 Python 3.9.1 是 Python 最新版本的一个分支&#xff0c;包含各种新特性和改进&#xff0c;能够让开发者快速、简单地创建并运行 Python 程序。如果您想要使用 Python 3.9.1&#xff0c;下面是一个简单的指南&#xf…

菜单选择shell

[rootes3 data]# vi action.sh #!/bin/bash . /etc/init.d/functionsecho -en "\E[$[RANDOM%731];1m"cat <<EOF请选择&#xff1a;1) 备份数据库2)清理日志3)软件升级4)软件回滚5)删库跑路EOFecho -en \E[0mread -p "请选择上面的项对应的数字1-5&#xf…

Spring Boot-如何让你的 bean 在其他 bean 之前完成加载

今天有个小伙伴给我出了一个难题&#xff1a;在 SpringBoot 中如何让自己的某个指定的 Bean 在其他 Bean 前完成被 Spring 加载&#xff1f;我听到这个问题的第一反应是&#xff0c;为什么会有这样奇怪的需求&#xff1f;Talk is cheap&#xff0c;show me the code&#xff0c…

「读书感悟系列」原则:应对变化中的世界秩序(达利欧)

作者 | gongyouliu 编辑 | gongyouliu 最近2个月读完了达利欧的『原则2&#xff1a;应对变化中的世界秩序』&#xff0c;收获非常大。几年之前读他的『原则1&#xff1a;工作与生活』就非常喜欢&#xff0c;很有启发&#xff0c;这次读起来一如既往的喜欢。这本书利用周期的思路…

Qt推流程序自动生成网页远程查看实时视频流(视频文件/视频流/摄像头/桌面转成流媒体rtmp+hls+webrtc)

一、前言说明 推流程序将视频流推送到流媒体服务器后&#xff0c;此时就等待验证拉流播放&#xff0c;一般可以选择ffplay命令行播放或者vlc等播放器打开播放&#xff0c;也可以选择网页直接打开拉流地址播放&#xff0c;一般主流的浏览器都支持网页直接播放hls/m3u8/webrtc类…