我们知道Queue是遵循先进先出(First-In-First-Out)模式的,但有些时候需要在Queue中基于优先级处理对象。举个例子,比方说我们有一个每日交易时段生成股票报告的应用程序,需要处理大量数据并且花费很多处理时间。客户向这个应用程序发送请求时,实际上就进入了队列。我们需要首先处理优先客户再处理普通用户。在这种情况下,Java的PriorityQueue会很有帮助。

PriorityQueue能高效地插入元素,高效地删除最小元素。

删除是基于默认的自然顺序排列(也就是数字小的在队列头)或者按Comparator规定的顺序排列。

比如说,Sue有一些轻微的小伤口最先来到了医院的急诊室

虽然Sue是先来的,但是,Joe被蛇咬伤更加需要先治疗,于是Joe被排在了Sue的前面

这时候Queue就基于优先级处理对象了,即PriorityQueue。

   public static void main(String[] args) {

         PriorityQueue<String> pQueue = new PriorityQueue<>();

         pQueue.add("B");

         pQueue.offer("C");

         pQueue.add("F");

         pQueue.offer("A");

         pQueue.add("L");

         pQueue.add("D");

         pQueue.add("E");

         pQueue.add("J");

         System.out.println("Head:" + pQueue.peek());

         while (!pQueue.isEmpty()) {

             System.out.print(pQueue.poll() + " ");

         }

     }

输出:

Head: A

A B C D E F J L

从以上代码可以看出,即使add到PriorityQueue的顺序是乱序,但PriorityQueue会以默认的从小到大顺序被poll()出来

最新文章

  1. 【QT】C++ GUI Qt4 学习笔记1
  2. 【BZOJ-2809】dispatching派遣 Splay + 启发式合并
  3. root密码
  4. *ecshop 首页促销价显示倒计时
  5. easyui 常用代码
  6. Tomcat配置NIO
  7. ora-06502
  8. Webservice中使用Session、Application
  9. UVA Graph Coloring
  10. stm8的独立看门狗与窗口看门狗
  11. EmitMapper 和TinyMapper 两者简单对比
  12. Linux - atexit()(注册终止)函数
  13. .Net+SQL Server企业应用性能优化笔记—精确查找瓶颈
  14. android程序崩溃后重启
  15. IO复用(较详细)
  16. 报表工具-ECharts 特性介绍
  17. EF Core HasQueryFilter 的小坑
  18. Android 浏览器内 H5 电脑 Chrome 调试
  19. Oil Deposits HDU 1241
  20. Linux 内核引导选项简介

热门文章

  1. [UE4]安卓打包成一个apk
  2. 向Nexus仓库推送/使用各种组件
  3. oracle 年龄计算 岁 月 天
  4. unity3d将C#打包成dll方法
  5. Memcached缓存框架
  6. 基于Linux的Samba开源共享解决方案测试(六)
  7. (c#) 销毁资源和释放内存
  8. C#中 ThreadStart和ParameterizedThreadStart区别
  9. Java反射 - 简单的给Bean赋值和取值
  10. python拓展4 数据结构