Java集合类学习--Queue, Deque

Java 数据结构之队列(Queue)详解 但需要注意的是,由于数组的容量是固定的,当队列已满时,无法再添加新的元素,除非进行元素的出队操作。通过enqueue()方法将元素入队,dequeue()方法将元素出队,peek()方法返回队列头部元素,size()方法返回队列当前元素个数,isEmpty()方法和isFull()方法检查队列是否为空或已满。Deque接口还提供了一些其他方法,如size()用于返回双端队列中的元素个数,isEmpty()用于判断双端队列是否为空,clear()用于清空双端队列中的所有元素等。 阅读详情

概述

Queue 和 Deque 都是接口。其中 Queue 接口定义的是一个队列,它包含队列的基本操作:入队(enqueue)和出队(dequeue)。

Deque 接口继承自 Queue 接口,表示双端队列(Double-ended queue),同时具备「队列」和「栈」的性质。二者的继承关系如下:
在这里插入图片描述

Queue

Queue是一个接口,有如下方法:
在这里插入图片描述
代码不多,一共200多行,根据操作可以分为三类:入队、出队和遍历。

入队:add() 和 offer()
二者区别在于:当队列空间已满无法入队时,add() 方法会抛出异常;而 offer() 会返回 false。
出队:remove() 和 poll()
二者区别在于:当队列为空时,remove() 方法会抛出异常,而 poll() 会返回 null。
遍历:element() 和 peek()
element() 和 peek() 都表示检索但不移除队列头部元素,可用于从头开始遍历队列。
二者区别在于:当队列为空时,element() 方法会抛出异常,而 peek() 会返回 null。

抛异常返回值
insertadd(e)offer(e)
removeremove()poll()
examineelement()peek()

Deque

Deque 接口继承自 Queue 接口,可以将 Deque 理解为「双端队列 」和「栈(Stack)」的组合。
一般的队列是从尾部插入元素、头部移除元素;而双端队列则可以分别从两端插入元素、两端移除元素。

Deque 接口方法定义如下:
在这里插入图片描述
由于 Deque 继承了 Queue 接口,因此 Queue 的方法在 Deque 中也有体现,Deque 定义的方法如下:

在这里插入图片描述

Deque 还有几个独有的方法:

removeFirstOccurrence():从该双端队列中移除第一次出现的指定元素;
removeLastOccurrence():从该双端队列中移除最后一次出现的指定元素;
descendingIterator():以相反顺序返回此双端队列中元素的迭代器,可以认为是 iterator() 反过来。

小结

Queue 和 Deque 都可用于表示队列;
Queue 表示基本的队列,包含队列的「入队」和「出队」操作;
Deque 继承自 Queue,除了基本的队列操作,Deque 是一个「双端队列」,可以认为它有两个头、两个尾;而且,Deque 还可以作为一个栈。

使用队列容器QQueue创建任务队列 数据缓冲:在处理大量数据时,可以使用 QQueue 作为缓冲区,存储已经处理过的数据,以便在需要时能够快速访问。例如,在处理实时音频或视频数据时,可以将已处理的数据帧存入 QQueue 中,以备后续的播放或分析使用。任务队列:可以用 QQueue 来管理一个任务队列,将待处理的任务添加到队列中,然后依次处理并移除已完成的任务。5、使用 const 成员函数:在遍历队列或访问队列元素时,使用 const 成员函数(如 constFirst() 和 constLast())可以避免不必要的拷贝操作,提高性能。 阅读详情

相关推荐

Qt QQueue 队列入门教程

本文简要介绍了 Qt 集合模板库中 QQueue 类的基本操作,包括创建、添加、删除和访问元素等常用操作。QQueue 是一个功能强大、易于使用的队列数据结构,助力 Qt 开发者实现更加高效的编程。

. 1979

聊一聊java.util包中的Queue、Deque以及Stack分别是什么

聊一聊队列、栈,以及java中的Queue,Deque,stack分别是什么

github_38727595的博客 2043

【Java集合 8】Java中的queue和deque

一、Queue和Deque Queue以及Deque都是继承于Collection,Deque是Queue的子接口。 Queue是FIFO的单向队列,Deque是双向队列。 Queue有一个直接子类PriorityQueue,而Deque中直接子类有两个:LinkedList以及ArrayDeque。 PriorityQueue的底层数据结构是数组,而无边界的形容,那么指明了PriorityQueue是自带扩容机制的。 ArrayDeque是无初始容量的双端队列,LinkedList则是双向链表。

学Java,找哪吒 7119

dequeue java_[转载]队列queue和双端Dequeue

转载自:http://uule.iteye.com/blog/2095650?utm_source=tuicool注意:这都只是接口而已1、Queue在java5中新增加了java.util.Queue接口,用以支持队列的常见操作。该接口扩展了java.util.Collection接口。Java代码publicinterfaceQueueextendsCollection除了基本的 C...

weixin_35046650的博客 1104

Blender学习笔记——制作向量场

#下载Blender - UE4 - FGA Vector Field Editor插件的压缩包,Github上的下载地址如下:https://github.com/isathar/Blender_UE4_VectorFieldEditor #下载并解压后将FGA VectorFields文件夹复制到C:\Program Files\Blender Foundation\Blender 2.83\2.83\scripts\addons目录下,此步骤可根据blender安装的位置自行调整,只要放入addon

wychao2020的博客 1724

HTTP 代理服务器的设计与实现

HTTP 代理服务器的设计与实现 首先当然是最重要的代码:github地址 1) 实验目的 熟悉并掌握 Socket 网络编程的过程与技术;深入理解 HTTP 协议,掌握 HTTP 代理服 务器的基本工作原理;掌握 HTTP 代理服务器设计与编程实现的基本技能。 2) 实验内容 基于 java 实现了基本功能与全部附加功能,并增加了 https 的支持 (1) 设计并实现一个基本 HTTP 代理服...

qq_42754642的博客 1887

Java集合类简述

ArrayList :基于动态数组实现,支持快速随机访问,插入和删除元素在中间位置时效率较低。- LinkedList :基于双向链表实现,在列表头和尾添加或删除元素效率高,随机访问效率较低。- LinkedHashSet :继承自 HashSet ,维护了元素的插入顺序。- PriorityQueue :优先级队列,元素按照自定义的优先级顺序出队。- HashSet :基于哈希表实现,不允许重复元素,元素无序。- HashMap :基于哈希表实现,不保证键值对的顺序。

m0_57836225的博客 505

【AI产品与商业航图】Flux.1 完全开源 AI 绘图模型:本地部署与 ComfyUI 实战指南

Flux.1是一个开源项目,用户可以自由使用和修改,完全免除使用费用。🖥️本地部署支持:与一些依赖云端计算的工具不同,Flux.1支持本地部署,确保用户可以离线使用并自主控制数据隐私。🔄兼容ComfyUI框架:Flux.1可以无缝集成到ComfyUI中,用户可以享受更加简便和直观的操作界面。🎨卓越的图像生成能力:Flux.1能够生成高质量、细腻的图像,支持多种风格与创作主题的切换。💾低硬件要求。

高校图书馆高级系统架构师/研究馆员,推动高校AI从概念演示到可评审、可交付、可运维:路线图与立项评审、PoC交付、评测回归与上线运维(Baseline/Eval/Ops)。 1736

《Java程序设计》第五周学习总结

20145224 《Java程序设计》第五周学习总结 教材学习内容总结 第八章异常处理 8.1.1使用try、catch ·教材范例用户连续输入整数,输入0结束后显示输入数的平均值(代码如下) import java.util.Scanner; public class Average { public static void main(String[] args) { ...

weixin_30828379的博客 117

改进的U-Net在视网膜血管分割上的应用

为了提高算法在血管边界的分割能力,在编码部分采用全局卷积网络(GCN)和边界细化(BR)替换传统的卷积层;在跳跃连接部分引入改进的位置注意模块(PA)和通道注意模块(CA),目的是增加血管与背景之间的对比度,使网络更好地将血管与背景分割开;此外,为了提高网络的性能,在编码部分的最后一层使用密集卷积网络解决网络过拟合问题,同时为了在一定程度上解决梯度爆炸、梯度消失的问题,在解码部分的每一层使用卷积长短记忆网络提升网络获取特征信息的能力。替换传统的卷积操作来解决血管边界非血管像素误分为血管的问题。

weixin_70923796的博客 782

【Unity实战100例】Unity循环UI界面切换卡片功能

功能包括:可以设置半径,高度,速度,元素数量用户可以根据自己的实际需求接入 制作思路:创建每个元素对应的虚拟点,通过旋转管理这些虚拟点,然后把旋转信息和位置信息同步给实际的元素

纯技术流日常开发商业开发记录总结等 7717

java Deque与Queue

java Deque与Queue 1、二者的关系 Deque继承Queue public interface Deque<E> extends Queue<E> 2、Queue接口 是集合框架Collection的子接口,是一种常见的数据结构,遵循先进先出的原则。基于链表来进行实现,的单向队列。LinkedList接口,实现了Queue,所以LinkedList,...

小十木的博客 4824

Dify与第三方平台(飞书、微信、钉钉)LangBot机器人对接实战

调用链路:飞书用户发消息 → 飞书开放平台事件回调 → LangBot 服务 → Dify 应用接口 → Dify 知识库 + 大模型生成答案 → 原路返回飞书聊天框Dify:承载知识库、提示词配置、大模型调用能力;LangBot:多 IM 渠道适配器,统一对接各大 IM 开放平台与 Dify API;飞书开放平台:提供机器人消息收发、事件推送能力。LangBot 作为中间转发服务,一端对接 Dify 应用 API,一端对接飞书开放平台机器人接口;

悦分享 266

Queue与Deque的区别

前言 ​ 在研究java集合源码的时候,发现了一个很少用但是很有趣的点:Queue以及Deque,平常在写leetcode经常用LinkedList向上转型Deque作为栈或者队列使用,但是一直都不知道Queue的作用,于是就直接官方文档好了。 正文 概念 从上图看出,Queue以及Deque都是继承于Collection,Deque是Queue的子接口。 下面来看一下官方文档的解释。 A l...

cartoon_的博客 9871

CANbus收发器ADM3053BRWZ-REEL7应用原理图设计

ADM3053 在 CAN 协议控制器与物理层总线之间创建一个 完全隔离的接口。该器件具有限流和热关断特性,可防止输出短路。额定温 度范围为工业温度范围,提供 20 引脚、宽体 SOIC 封装。该器件采用 5 V 单电源供电, 提供完全隔离的 CAN 解决方案。ADM3053 是一款隔离式控制器区域网络 (CAN) 物理层收 发器,集成隔离 DC/DC 转换器,符合 ISO 11898 标准。该器件采用 ADI 公司的。Coupler® 技术,将双通道隔离器、 CAN 收发器和 ADI 公司的。

zhusl6688的博客 1236

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Java中Queue以及Deque详解

Deque的栈操作时间复杂度均为O(1),而Stack的。:基于堆的优先级队列(自然序/Comparator):当队列满时阻塞生产者,队列空时阻塞消费者(扩容规则:加倍容量(16→32→64...)是标准FIFO队列(尾部添加,头部移除):基于循环数组(默认容量16,性能最优)重要特性:容量总是2的幂(位运算优化):固定大小的阻塞队列(线程安全):大多数队列/栈需求(默认选择):固定使用尾部添加+头部移除组合。:固定使用头部添加+头部移除组合。:可选有界阻塞队列(线程安全):基于双向链表(支持索引访问)

qq_45906596的博客 1661

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

java关于Deque的使用

定义 双向队列:支持插入删除元素的线性集合。 java官方文档推荐用deque实现栈(stack)。 和Queue的区别 Deque是double ended queue,将其理解成双端结束的队列,双端队列,可以在首尾插入或删除元素。 Queue的解释中,Queue就是简单的FIFO队列。 所以在概念上来说,Queue是FIFO的单端队列,Deque是双端队列。 特点 1.插入、删除、获取操作支持两种形式:快速失败和返回null或true/false 2.既具有FIFO特点又具有LIFO特点,即是队列又是

onedegree的博客 2万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Queue、Deque、LinkedList学习

Queue 什么是Queue   Queue 是 java.util 包下面的一个接口,继承了 Collection 接口,Queue的中文意思为队列;队列是一种特殊的线性表,是一种先进先出(FIFO)的数据结构。它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 类定义 方法定义 Deque 什么是Deque Deque 是 java.util 包下面的一个接口,继承了 Queu

GoldenStar的博客 2047

Java_Queue,Deque总结

Java中队列的使用记录

qq_43563660的博客 4005

Java队列Queue、双端队列Deque

http://uule.iteye.com/blog/2095650?utm_source=tuicool 注意:这都只是接口而已   1、Queue API 在java5中新增加了java.util.Queue接口,用以支持队列的常见操作。该接口扩展了java.util.Collection接口。   Java代码   public

Android移动开发者的专栏 8996

java 中的Stack、Queue、Deque

1.Stack java集合框架中没有Stack接口,仅仅有java早期遗留下来的一个Stack类。 Java.util.Stackpublic Stack extends Vector 因为集成自Vector,所以Stack类是同步的,效率不高。官方一般建议这样使用ArrayDeque代替Stack Deque stack = new ArrayDeque(); 2.Queue

知之可否 1万+

Java集合类分析Queue、Deque(三)

在java里面Queue是一个接口,它只是定义了一个基本的Queue应该有哪些功能规约。实际上有多个Queue的实现,有的是采用线性表实现,有的基于链表实现。还有的适用于多线程的环境。java中具有Queue功能的类主要有如下几个:AbstractQueue, ArrayBlockingQueue, ConcurrentLinkedQueue, LinkedBlockingQueue, DelayQueue, LinkedList, PriorityBlockingQueue, PriorityQueue.

lk941206的博客 2074

Java并发基础:Deque接口和Queue接口的区别?

Deque(double ended queue,双端队列)和Queue(队列)都是Java集合框架中的接口,它们用于处理元素的排队和出队,但是它们之间存在一些重要的区别。

科技互联网领域深度探索者,乐于分享与写作。 2067

java deque与queue_Java中的Queue与Deque

Queue接口的实现类Queue接口作为队列数据结构,java在实现的时候,直接定义了Deque接口(双端队列)来继承Queue接口,并且只实现Deque接口。这样java中的双端队列就囊括了队列、双端队列、堆栈(Deque接口又定义了Stack的操作方法)这3种角色的功能。所以我们在使用的时候直接使用的是Deque接口的实现类,当然Deque接口继承自Queue接口。Deque接口的实现类我们记...

weixin_33573857的博客 1461

Java--Queue和Deque

​Queue以及Deque都是继承于Collection,Deque是Queue的子接口。 Queue是FIFO的单向队列,Deque是双向队列。 Queue有一个直接子类PriorityQueue,而Deque中直接子类有两个:LinkedList以及ArrayDeque。 1、Queue(单向队列) (1)基本介绍: Queue是先进先出(FIFO)的单向队列,只允许在表的前端进行删除操作,在表的后端进行插入操作。 LinkedList类实现了Queue接口,因此可以把LinkedList当成Q

hgr_com的博客 1927
上一篇: Java集合类学习--Vector
下一篇: Java集合类学习--ArrayList
CodersCoder
博客等级 码龄10年 90粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值