优先级队列的使用[通俗易懂]

优先级队列的使用[通俗易懂]优先级队列(priorityqueue)中的元素可以按照任意的顺序插入,却总是按照排序的顺序进行检索。也就是说,无论何时调用remove方法,总会获得当前优先级队列中最小的元素.然后,优先级队列并没有对所有的元素进行排序。如果用迭代的方式处理这些元素,并不需要对它们进行排序。优先级队列使用了一个优雅且高效的数据结构,称为堆(heap)。堆事一个可以自我调整的二叉树,对树执行添加(add)和删除(

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

   优先级队列(priority queue)中的元素可以按照任意的顺序插入,却总是按照排序的顺序进行检索。也就是说,无论何时调用remove方法,总会获得当前优先级队列中最小的元素.然后,优先级队列并没有对所有的元素进行排序。如果用迭代的方式处理这些元素,并不需要对它们进行排序。优先级队列使用了一个优雅且高效的数据结构,称为堆(heap)。堆事一个可以自我调整的二叉树,对树执行添加(add)和删除(remove)操作,可以让最小的元素移动到根,而不必花费时间对元素进行排序。

   使用优先级队列的典型示例是任务调度。每一个任务都有一个优先级,任务以随机顺序添加到队列中。

  PriorityQueue<GregorianCalendar> pq = new PriorityQueue<GregorianCalendar>();
         pq.add(new GregorianCalendar(1906,Calendar.DECEMBER,9));
         pq.add(new GregorianCalendar(1815,Calendar.DECEMBER,10));
         pq.add(new GregorianCalendar(1903,Calendar.DECEMBER,3));
         pq.add(new GregorianCalendar(1910,Calendar.JUNE,22));
         
         System.out.println(“Iterating over elements。。。”);
         for(GregorianCalendar date :pq){

             System.out.println(date.get(Calendar.YEAR));
         }
         System.out.println(“Removing elements。。。”);
         while(!pq.isEmpty())
             System.out.println(pq.remove().get(Calendar.YEAR));
         
    }

 控制台显示:

Iterating over elements。。。
1815
1906
1903
1910
Removing elements。。。
1815
1903
1906
1910

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193055.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 怎么看idea是否激活_最新在线免费激活

    (怎么看idea是否激活)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlCJM5ZJBPHS-eyJsaWNlbnNlSWQi…

    2022年3月31日
    82
  • 使用MySQL UDFs来调用gearman分布式任务分发系统

    使用MySQL UDFs来调用gearman分布式任务分发系统

    2021年7月8日
    693
  • ansi是什么编码格式_ansi编码是什么意思

    ansi是什么编码格式_ansi编码是什么意思用Notepad++创建一个文本文件text.txt,其默认编码格式为ANSI(乍看之下,还以为是ASCII呢),输入汉字居然不是乱码:保存为test.txt,发送给你美国的同事Bob。他也用Notepad++,不幸的是,却发现你的文件内容是这样的:也许你会认为:你用的是中文系统,能正常显示中文;他用的是英文系统,不能显示中文!这么想,好像很有道理呢!但是再细想一下:一个系

    2022年9月24日
    3
  • Discuz搬家教程[通俗易懂]

    Discuz搬家教程[通俗易懂]第一步:备份网站数据进入后台—站长—数据库—备份,数据备份类型选择“Discuz!和UCenter数据”,备份成功以后,数据自动保存在data文件夹下。第二步:网站文件下载把整个网站文件打包(虚拟主机管理控制面板一般都有整站压缩和解压的功能,在控制面板选择压缩,压缩之后的文件一般在FTPDB文件夹里面,然后把压缩包下载到本地电脑,如果虚拟主机没有在线压缩功能那就直接使用FTP下载文件到本地保存。第三步:整理下载到本地的网站文件1.把下载下来的文件里面的下列文件删除,请完全放心删除掉这几个文件,

    2022年7月25日
    21
  • Samba服务器配置(什么情况下需要服务器)

    一、简介  Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,SMB(ServerMessageBlock)服务器消息块  Samba最大的功能是可以用于Linux与windows系统直接的文件共享和打印共享,既可以用于Windows与linux之间的文件共享也可以用于linux与linux之间的资源共享  基于客户机/服务器的协议,因而一台S…

    2022年4月14日
    95
  • 并查集例题_并查集算法

    并查集例题_并查集算法E – 带删除并查集 UVA – 11987 Almost Union-Find

    2022年4月20日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号