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

java内置了优先队列PriorityQueue

PriorityQueue类在Java1.5中引入并作为 Java Collections Framework 的一部分。PriorityQueue是基于优先堆的一个无界队列,这个优先队列中的元素可以默认自然排序或者通过提供的Comparator(比较器)在队列实例化的时排序。

优先级队列 是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素。

首先它是一个队列,但是它强调了“优先”二字,所以,已经不能算是一般意义上的队列了,它的“优先”意指取队首元素时,有一定的选择性,即根据元素的属性选择某一项值最优的出队~

关于priority_queue
1,关于STL中的priority_queue:确定用top()查看顶部元素时,该元素是具有最高优先级的一个元素. 调用pop()删除之后,将促使下一个元素进入该位置. 
2,如同stack和queue,priority_queue是一个基于基本序列容器进行构建的适配器,默认的序列器是vector。

 

 

优先队列不允许空值,而且不支持non-comparable(不可比较)的对象,比如用户自定义的类。优先队列要求使用Java Comparable和Comparator接口给对象排序,并且在排序时会按照优先级处理其中的元素。

优先队列的头是基于自然排序或者Comparator排序的最小元素。如果有多个对象拥有同样的排序,那么就可能随机地取其中任意一个。当我们获取队列时,返回队列的头对象。

优先队列的大小是不受限制的,但在创建时可以指定初始大小。当我们向优先队列增加元素的时候,队列大小会自动增加。

PriorityQueue是非线程安全的,所以Java提供了PriorityBlockingQueue(实现BlockingQueue接口)用于Java多线程环境。

Java内置了优先队列,就是基于堆实现的,默认是最小堆,可以传入Comparator改变堆的形式。
 

PriorityQueue<Integer> maxHeap=new PriorityQueue<>(Comparator.reverseOrder());//优先队列 默认最小堆 现在是最大堆

相关文章:

  • Hadoop和分布式系统
  • c++ 指向类成员函数的函数指针
  • 数组流中的中位数
  • Java——观察者模式实例
  • 连续子数组的最大和
  • 礼物的最大价值
  • 最长不含重复字符的字符串
  • Mac下JDK的安装的配置
  • 第二阶段个人总结09
  • java并发
  • idea中Spring报错Exception in thread main java.lang.ClassCastException
  • How Spring Boot Autoconfiguration Magic Works--转
  • PriorityQueue优先级队列
  • TCP/IP三次握手与四次挥手
  • MySQL的多实例
  • JavaScript 如何正确处理 Unicode 编码问题!
  • [数据结构]链表的实现在PHP中
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • Android Studio:GIT提交项目到远程仓库
  • E-HPC支持多队列管理和自动伸缩
  • Javascript基础之Array数组API
  • JDK9: 集成 Jshell 和 Maven 项目.
  • js递归,无限分级树形折叠菜单
  • log4j2输出到kafka
  • Python打包系统简单入门
  • React16时代,该用什么姿势写 React ?
  • React系列之 Redux 架构模式
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • Spring-boot 启动时碰到的错误
  • uni-app项目数字滚动
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 我感觉这是史上最牛的防sql注入方法类
  • 小程序button引导用户授权
  • 栈实现走出迷宫(C++)
  • 主流的CSS水平和垂直居中技术大全
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • UI设计初学者应该如何入门?
  • #《AI中文版》V3 第 1 章 概述
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • (C语言)二分查找 超详细
  • (分布式缓存)Redis分片集群
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (一)Java算法:二分查找
  • .Net 4.0并行库实用性演练
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .NET 反射的使用
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .NET上SQLite的连接
  • .NET是什么
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • [acwing周赛复盘] 第 94 场周赛20230311
  • [AIGC] 使用Curl进行网络请求的常见用法
  • [Android]RecyclerView添加HeaderView出现宽度问题
  • [AutoSar]工程中的cpuload陷阱(三)测试