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

优先级队列(PriorityQueue)

优先级队列(PriorityQueue)

  • 1. PriorityQueue的特性
  • 2. PriorityQueue常用方法介绍
    • 常用构造方法
    • 常用的普通方法

1. PriorityQueue的特性

  1. 使用时必须导入PriorityQueue所在的包,即
    import java.util.PriorityQueue;
  2. PriorityQueue中所放置的元素必须能够比较大小,不能插入无法比较大小的对象,否则会抛出ClassCastException异常(类型转换异常)
  3. 不能插入null对象,否则会抛出NullPointerException异常(空指针异常)
  4. 没有容量限制,可以插入任意多个元素,其内部可以自动扩容
  5. 插入元素和删除元素的时间复杂度都是O(log2N)
  6. PriorityQueue底层是使用堆这种数据结构
  7. PriorityQueue默认情况下是小根堆,即每次获取到的元素都是最小的元素

2. PriorityQueue常用方法介绍

常用构造方法

在这里插入图片描述

  • 第一个是无参的构造方法
  • 第二个构造方法是创建一个初始容量为形参的优先级队列,注意:传过去的形参不能小于1,否则会抛出IllegalArgumentException异常。一般在创建优先级队列对象时,如果知道元素个数,建议直接将底层容量给好,如果后续需要扩容时,需要开辟更大的空间,拷贝元素,这样效率会比较低
  • 第三个构造方法是传比较器,设置该优先级队列底层是建大根堆还是小根堆,默认是建小根堆;另外,建堆的元素是一个个对象时,需要传比较器
  • 第四个构造方法是既设置了优先级队列的初始容量,又传了比较器
  • 第五个构造方法是用一个集合来创建优先级队列
public class Test {public static void main(String[] args) {// 创建一个空的优先级队列,底层默认容量是11PriorityQueue<Integer> q1 = new PriorityQueue<>();// 创建一个初始容量为100的优先级队列PriorityQueue<Integer> q2 = new PriorityQueue<>(100);ArrayList<Integer> list = new ArrayList<>();list.add(1);list.add(2);list.add(3);list.add(4);// 用ArrayList对象来构造一个优先级队列的对象PriorityQueue<Integer> q3 = new PriorityQueue<>(list);}
}

常用的普通方法

  1. boolean offer(E e)
    插入元素e
  2. E peek()
    获取优先级最高的元素,若优先级队列为空,则返回null
  3. E poll()
    移除优先级最高的元素,如果优先级队列为空,则返回null
  4. int size()
    获取有效元素的个数
  5. void clear()
    清空优先级队列
  6. boolean isEmpty()
    判断优先级队列是否为空,为空则返回true

http://www.mrgr.cn/news/64166.html

相关文章:

  • 从自动驾驶到具身智能漫谈
  • OpenCV计算机视觉 02 图片修改 图像运算 边缘填充 阈值处理
  • Hadoop的生态系统所包含的组件
  • mac 关闭 sip
  • 【机器学习(九)】分类和回归任务-多层感知机(Multilayer Perceptron,MLP)算法-Sentosa_DSML社区版 (1)11
  • centos制作离线安装包
  • Visual Studio 2019下载安装使用教程
  • Php实现钉钉OA一级审批,二级审批
  • 河南省教育厅办公室关于举办2024年河南省高等职业教育技能大赛的通知
  • electron + vue 打包完成后,运行提示 electrion-updater 不存在
  • 最小支撑树MST
  • 数据结构-复杂度
  • phcharm贪吃蛇小游戏后续一(代码1,2,3前文已发)
  • CesiumJS 案例 P18:检测文本、删除所有文本、隐藏与显示文本、改变文本
  • 二维码中怎么存入文件?文件二维码活码的3步制作技巧
  • CAD图纸防泄密|哪些措施可以加密公司图纸?五个宝藏方法分享,2024必读!
  • 无人机维护保养、部件修理更换技术详解
  • Python 列表的定义语法
  • 【毫米波雷达(四)】车载毫米波雷达下线EOL标定流程
  • 【VUE+DRF】案例升级
  • 国产服务器部署1.获取银河麒麟V10服务器。首先挂gpt数据盘
  • Apache-Seata 拯救分布式系统数据一致性的开源神器
  • vcruntime140.dll如何修复,六种解决vcruntime140.dll的方法分享
  • Python-创建并调用自定义文件中的模块/函数
  • 如何绘制带有误差线的堆叠柱状图
  • 【C语言】文件操作