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

优先级队列的使用[通俗易懂]优先级队列(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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java连接ldap服务器_从Java应用程序连接LDAP服务器「建议收藏」

    java连接ldap服务器_从Java应用程序连接LDAP服务器「建议收藏」我正在构建一个基于GXT(J2EE)的应用程序.现在的问题是我必须将应用程序连接到LDAP服务器.您能告诉我如何从我们的Java应用程序连接LDAP服务器以及我将使用哪些库或API?解决方法:要连接到LDAP,请查看以下包/类:javax.naming.directory.*javax.naming.ladp.*com.sun.jndi.ldap.LdapCtxFactorycom.sun.jnd…

    2022年5月14日
    37
  • Vue学习-day02

    Vue学习-day02

    2021年7月12日
    97
  • 武侠世界大拯救(金庸小说是一个世界观吗)

    2018年10月30日晚,成都地铁一号线,Jerry手机app上突然弹出来一条金庸去世的新闻。Jerry识字很早,小学一年级就开始蹭我父亲的《射雕英雄传》看了。小时候,我爸工作的车间里有一位领导,退休后把自己家的一个房间腾出来,满满两个落地书架摆满了各种武侠小说。每逢寒暑假,Jerry的父亲就会带着我去那里租小说回家看,一本书一天的租金是一角钱。Jerry至今都要感激我的父母,在我小的时候,没有…

    2022年4月17日
    106
  • 11.1 LAMP架构介绍11.2 MySQL_MariaDB介绍11.3-11.5 MySQL安装

    11.1 LAMP架构介绍11.2 MySQL_MariaDB介绍11.3-11.5 MySQL安装

    2022年3月11日
    45
  • Mysql 日期格式转换

    Mysql 日期格式转换DATE_FORMAT(date,format)根据格式串format格式化日期或日期和时间值date,返回结果串。 可用DATE_FORMAT()来格式化DATE或DATETIME值,以便得到所希望的格式。根据format字符串格式化date值:

    2022年6月15日
    54
  • Hadoop生态系统图

    Hadoop生态系统图当下Hadoop已经成长为一个庞大的生态体系,只要和海量数据相关的领域,都有Hadoop的身影。下图是一个Hadoop生态系统的图谱,详细列举了在Hadoop这个生态系统中出现的各种数据工具。这一切,都起源自Web数据爆炸时代的来临。Hadoop生态系统的功能以及对应的开源工具说明如下。MapReduce

    2022年5月19日
    50

发表回复

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

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