关于java中PriorityQueue类的使用方法

这篇具有很好参考价值的文章主要介绍了关于java中PriorityQueue类的使用方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天做了力扣的每日一题 ==》 2208. 将数组和减半的最少操作次数  起初我用数组这个死方法去做这个题,代码写出来了,不过在最后运行的时候超时了。看大佬的解答中,我发现了这个类,之前从来都没看到过,所以学习了一下,写这篇文章记一下。

目录

前言

一、PriorityQueue是什么?

二、简单使用

   1.创建对象

   2.方法使用

总结


前言

好看好学


一、PriorityQueue是什么?

从单词的意思上老说。Priority的意思是优先,Queue是队列的意思。那这个合起来意思就是 优先队列。有时需要根据优先级处理队列的元素,这就是PriorityQueue发挥作用的地方。PriorityQueue基于优先级堆。优先级队列的元素按照自然顺序排序,或者由队列构造时提供的Comparator排序,这取决于使用的是哪个构造函数。

二、简单使用

   1.创建对象

        在这个类中,可以创建两种不同形式的兑:一个是大顶堆,一个是小顶堆,关于大顶堆和小顶堆是啥,可以可以去学习一个数据结构,里面会有相对应的知识点。

a. 创建小顶堆

 创建小顶堆的话,直接使用默认的创建方式即可。

// 创建小顶堆
PriorityQueue<Integer> pQueue = new PriorityQueue<Integer>();

b. 创建大顶堆

创建大顶堆的话,与创建小顶堆唯一的区别是后面有一可以Lambda表达式,里面进行设置两个参数,用第二个参数减去第一个参数,则会创建大顶堆。

// 第二个参数减第一个是大顶堆 
    PriorityQueue<Integer> pQueue = new PriorityQueue<Integer>((T1,T2)->T2-T1);

   2.方法使用

方法使用的话,一般来说,学过数据结构,自己写过大小堆的话,会知道里面有啥方法的,并且如何实现,应该也知道一点儿,这儿只放一些方法有哪些:

public boolean add(E e); //在队尾插入元素,插入失败时抛出异常,并调整堆结构
public boolean offer(E e); //在队尾插入元素,插入失败时抛出false,并调整堆结构

public E remove(); //获取队头元素并删除,并返回,失败时前者抛出异常,再调整堆结构
public E poll(); //获取队头元素并删除,并返回,失败时前者抛出null,再调整堆结构

public E element(); //返回队头元素(不删除),失败时前者抛出异常
public E peek();//返回队头元素(不删除),失败时前者抛出null

public boolean isEmpty(); //判断队列是否为空
public int size(); //获取队列中元素个数
public void clear(); //清空队列
public boolean contains(Object o); //判断队列中是否包含指定元素(从队头到队尾遍历)
public Iterator<E> iterator(); //迭代器

这些方法怎么用 可以看下面的博客 ==》什么是PriorityQueue优先级队列,使用PriorityQueue建立大顶堆和小顶堆
Java 优先队列(PriorityQueue)总结
【Java集合框架】09 ——PriorityQueue 类


总结

好学,好耍,老子是坐忘道红中!!!文章来源地址https://www.toymoban.com/news/detail-606226.html

到了这里,关于关于java中PriorityQueue类的使用方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C# FileInfo类的使用方法及常用操作(附代码示例)

    在C#编程中,处理文件操作是一项常见而重要的任务。为了更好地管理和操作文件,C#提供了一个强大且灵活的FileInfo类。本文将深入探讨C# FileInfo类的使用方法,并为您提供一些实用的代码示例。 FileInfo类是位于System.IO命名空间中的一个类,它提供了一系列用于操纵文件的属

    2024年02月06日
    浏览(29)
  • 【Chia开发文档】Offer 类的属性、使用方法、作用及返回值

    格式如下 使用方法: Offer.xxx 作用:aaa 第 1 个 offer 文件的返回值: yyy 第 2 个 offer 文件的返回值: zzz Offer.additions() 作用:调用不受信任的输入 注:未来可能被移除出 full_node  Offer.arbitrage() 作用:返回交易中涉及的每种资产的类型和金额的字典,金额是他们在报价中提供的

    2024年01月18日
    浏览(34)
  • 用旧版本Matlab训练的 classregtree类的决策树model 在新版Matlab无法使用的解决方法

    想把原来r2015a版本的代码升级到r2021b,用2021b运行原来的代码时,报错 搜索发现R2019a中已经去除了classregtree函数和classregtree类 新版本的Matlab load(‘TreeModel.mat’)后,查看TreeModel的值 TreeModel共有37个nodes, 决策树model就是根据特征值是否满足条件 进而判断哪一类别,因此,把

    2024年02月21日
    浏览(28)
  • 关于charAt()的使用方法

    charAt()是JAVA中常用的字符串方法,其作用返回一个字符串的指定位置的字符,索引是从[0,length-1].比如: str.charAt(0)检索str中的第一个字符,str.charAt(str.length()-1)检索最后一个字符。 进阶用法 s1.charAt(i)返回s1 i的第th个字符String. 假设此String仅包含小写字母(即\\\'a\\\'到\\\'z\\\'),s1. //charAt(i

    2024年02月12日
    浏览(20)
  • 关于Validation的方法使用

    acceptance 是 Rails 中的一个验证器(validator),用于验证一个布尔类型的属性是否被接受。在表单中,通常会有一些复选框或单选按钮,用户需要勾选或选择才能提交表单。 acceptance 验证器用于确保这些复选框或单选按钮已经被选中或勾选。 当一个属性被验证时, acceptance 验证

    2023年04月20日
    浏览(23)
  • 关于SpringCloud的中的Eureka使用方法

    首先创建一个空项目: 创建父工程 shop_parent 在 IDEA 中创建父工程 shop_parent 并引入坐标  : 继续创建微服务模块也就是子模块: product_service 、order_service 搭建maven项目: 要注意一定要指向父模块:没有的需要自己配置  实现代码中的实体类: 编写dao:采用的是SpringBoot和My

    2024年02月02日
    浏览(27)
  • 关于Unity Physics.CheckBox的使用方法

    在UnityAPI手册中Physics.CheckBox是Unity Physics类中的一个方法,该方法拥有四个重载,用于检查给定的盒体是否与其他碰撞体重叠。 public static bool CheckBox (Vector3 center, Vector3 halfExtents, Quaternion orientation= Quaternion.identity, int layermask= DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteracti

    2024年01月21日
    浏览(30)
  • 关于Python中使用selenium八大定位方法

    1.通过id元素定位                             .find_element_by_id(\\\"id\\\") 2.通过name元素定位                       .find_element_by_name(\\\"name\\\")     3.通过路径导航定位                         .find_element_by_xpath(\\\"xpath\\\")          说明 :右键所选的网页元素,点击copy,点击copy ,x

    2023年04月23日
    浏览(36)
  • 关于使用BETWEEN AND 使索引失效的解决方法

    由于业务需要,需要使用between and 查询数据, 在查询数据条数约占总条数五分之一以下时能够使用到索引,但超过五分之一时,则使用全表扫描了。速度极慢。 解决办法(联合索引+强制使用索引)

    2024年02月14日
    浏览(28)
  • 关于gitlab 使用用户名与密码登陆的方法

    首先设置access token 有了access token后,我们还需要在git中进行配置,这样才能go get下了私有仓库的包,需要把刚刚的token添加进git的请求头中,操作如下: git config --global http.extraheader \\\"PRIVATE-TOKEN: YOUR_PRIVATE_TOKEN\\\" 配置git将请求从ssh转换为http env GIT_TERMINAL_PROMPT=1 go get -u chainmaker.

    2024年02月12日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包