优先队列(Priority Queue)是一种特殊的队列,它能够根据元素的优先级自动排序。在优先队列中,元素的出队顺序不是按照它们进队的顺序,而是根据元素的优先级确定的,优先级高的元素先出队。优先队列常用于实现任务调度、最小(最大)堆等场景。
Java 中的 PriorityQueue
类实现了优先队列的功能,它使用堆数据结构来实现自动排序。默认情况下,PriorityQueue
是最小堆(即优先级最小的元素先出队),但您也可以通过自定义比较器来创建最大堆。
以下是一个简单的 Java 代码示例,演示如何使用 PriorityQueue
创建一个最小堆:
1 | import java.util.PriorityQueue; |
在上面的代码中,我们使用 PriorityQueue
创建了一个最小堆。通过 add
方法向堆中插入元素,然后通过 poll
方法逐个弹出并输出堆中的元素。输出的结果将会是升序排列的。
需要注意的是,PriorityQueue
可以存储任何实现了比较接口(如 Comparable
或自定义的比较器)的元素。在创建优先队列时,您可以通过构造函数传递自定义的比较器来控制元素的排序方式。
虽然这只是一个简单的示例,但 PriorityQueue
在实际应用中具有更广泛的用途,如实现 Dijkstra 算法、优先级任务调度等。在使用时,建议您仔细阅读相关文档并根据具体需求进行定制。