码迷,mamicode.com
首页 > 其他好文 > 详细

理解数据结构Priority Queue

时间:2018-05-25 11:07:44      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:生成   img   rcv   SM   odm   gsm   hbm   png   alt   

 

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

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

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

技术分享图片

 

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

 

 

技术分享图片

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

技术分享图片

 

 

技术分享图片 

 

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

 

 

 1   public static void main(String[] args) {
 2 
 3         PriorityQueue<String> pQueue = new PriorityQueue<>();
 4 
 5         pQueue.add("B");
 6 
 7         pQueue.offer("C");
 8 
 9         pQueue.add("F");
10 
11         pQueue.offer("A");
12 
13         pQueue.add("L");
14 
15         pQueue.add("D");
16 
17         pQueue.add("E");
18 
19         pQueue.add("J");
20 
21         System.out.println("Head:" + pQueue.peek());
22 
23         while (!pQueue.isEmpty()) {
24 
25             System.out.print(pQueue.poll() + " ");
26 
27         }
28 
29     }

 

出:

Head: A

A B C D E F J L

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

 

 

 

 

 

 

理解数据结构Priority Queue

标签:生成   img   rcv   SM   odm   gsm   hbm   png   alt   

原文地址:https://www.cnblogs.com/liuliu5151/p/9086175.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!