6. Queue

news/2024/7/24 5:06:05 标签: java
Queue

队列是一种重要的数据结构,跟人排队购票类似。Java集合中队列相关的类有:

1. LinkedList
LinkedList实现了Queue和Deque接口,所以LinkedList也用来实现普通队列,相关操作有: offer, poll, peek, offerFirst, offerLast, pollFirst, pollLast, peekFirst, peekLast。 具体见LinkedList一节

2. ArrayDeque
ArrayDeque是底层基于数组的队列,操作跟LinkedList的一样

3. PriorityQueue
优先级队列,即插入的元素不是依次从队尾插入,而是保持一定的顺序,出列时队首的先出。

4. ConcurrentLinkedQueue, ConcurrentLinkedDeque
支持并发的队列

5. BlockingQueue: ArrayBlockingQueue, LinkedBlockingQueue, PriorityBlockingQueue, LinkedBlockingDeque etc…
阻塞队列:基于数组的阻塞队列,基于链表的阻塞队列,优先级阻塞队列等。
阻塞队列非常有用,可以非常轻松实现多线程场景下生产消费者模式

PriorityQueue

优先级队列在工作中有很多应用,如OS按优先级队列获取待执行进程。Java中的PriorityQueue是非线程安全的, 底层是数组。 当入列时按优先级插入到指定位置,出列时取头元素。

优先级队列底层用到了基于数组的heap树型数据结构,即大顶堆,小顶堆。

offer, pull操作的时间复杂度是: O(logN)
入列,出列会涉及到堆化,平均时间复杂度就是O(logN)

remove(Object), contains(Object)的时间复杂度是: O(N)
移除指定的元素时需要先遍历数组项,找到目标元素,移除再重新堆化

peek的时间复杂度是: O(1)
这个好理解,只是取队首元素,常量时间即可

BlockingQueue

阻塞队列在后面并发包再讲


http://www.niftyadmin.cn/n/5159315.html

相关文章

【达梦数据库】学习笔记

【达梦数据库】学习笔记 【一】如何使用idea连接达梦数据库【二】idea项目导入本地的达梦数据库驱动jar包 【一】如何使用idea连接达梦数据库 (1)打开idea,点击右上角的数据库 (2)把达梦数据库的jar包配置一下 找到…

【算法设计实验二】分治法解决棋盘覆盖问题

import java.util.*;public class Main {static int cnt0;public static void main(String[] args){Scanner scnew Scanner(System.in);System.out.println("请输入棋盘边长大小!");int nsc.nextInt();int[][] gnew int[n][n];System.out.println("请…

错误,LNK1107,文件无效或损坏

错误内容: LNK1107,文件无效或损坏:无法在0x406A4处读取 xxxx..\x64\Debug\xxx.obj 1 解决方案: 删除错误内容中提到的obj文件

【大厂招聘试题】__嵌入式开发工程师_2023届“联想”_1

目录 匹配职位:嵌入式开发工程师 1.(单选题)嵌入式系统按是否拥有通用操作系统来进行分类,可分为两种,分别为单片机和单板机,下列选项中属于单板机的是( ) 2.(单选题&…

从JDK8升级到JDK17

JDK8太老了,发布10年了吧,新开发的还是用最新免费长期支持版JDK17吧。这次把工程和环境升级到JDK17再继续后面工作,避免后面写多了还得解决升级问题。 先从官网下载JDK17 下载地址 解压后的文件夹放到一个位置 然后修改环境变量 修改好之…

PicoLog软件应用-电动车能耗记录

在这篇案例中,将为你分享PicoLog软件的应用,除此之外,你也会看到它与Picoscope 7软件的不同。 例如,客户在夜间给他/她的电动汽车(EV)充电,并由能源公司收取相应的电费。 电源消耗的计算公式如下…

调用DeleteLocalRef的正确姿势

做安卓jni相关开发的总会在涉及到jni变量释放时怀疑人生,what? where? when? who? why? how? how much? 最近碰到一个比较奇怪的问题,有一个jni方法的耗时在随着调用次数的增加而上涨,但是没有明显的内存泄漏,经过我缜密分…

阿里云oss迁移到AWS S3

这里写自定义目录标题 0.项目背景1.rclone 方式2.rsync方式3.注意 0.项目背景 公司迁移要求:从阿里云oss到亚马逊s3,数据量大概500G-2T左右。 开启阿里云oss 加速模式,这样能够跨机房和区域加速。 主要采用以下两种方式同步数据,…