Java优先队列(PriorityQueue)介绍

队列(Queue)这种数据结构,是”先来先服务”(FIFO)的。 但是有的时候,我们需要对“优先级”高的对象先处理。或者说,我们想在队列中按照我们喜欢的样子排序。

Java 1.5,开始引入了优先队列(PriorityQueue)

简单来说,要使用这个队列,那么放入队列的对象要实现Comparable接口。之后,队列在添加元素的时候,就会根据这个方法,放入合适的位置。取出的时候,会弹出排在最前面的元素。

下面,我们通过一个例子体会一下优先队列的作用和用法。


这个练习题来自HackkerRank:Java Priority Queue

题目要求

学生有token,成绩,名字。每次输入一个命令,如果是“ENTER”,就添加新的学生进来,按照成绩排序放入。如果成绩相同,按照名字字母序放入。如果名字也相同,就按照token放。 如果命令是“SERVED”,就弹出最前面的同学。最后,打印剩下的队列,如果为空,打印“EMPTY”。

输入示例

输出示例

我的代码:

通过这个例子,可以很好地理解优先队列了。

参考资料

Java优先队列(PriorityQueue)示例

Leave a comment

电子邮件地址不会被公开。 必填项已用*标注