理解数据结构Priority Queue
我们知道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()出来
相关推荐
LauraRan 2020-09-28
koushr 2020-11-12
zhangxiafll 2020-11-13
kikaylee 2020-10-31
范范 2020-10-28
MILemon 2020-10-22
hugebawu 2020-10-12
shenwenjie 2020-09-24
omyrobin 2020-09-23
guangcheng 2020-09-22
qiangde 2020-09-13
hanyujianke 2020-08-18
晨曦之星 2020-08-14
xiesheng 2020-08-06
KAIrving 2020-08-02
xiesheng 2020-08-02
范范 2020-07-30
chenfei0 2020-07-30