什么是优先队列,它有什么用
What is a priority queue and what is it useful for
当我们编写和使用优先级队列时,优先级究竟代表什么?它是抽象的还是具体的,例如按不同建筑物的高度排序?
使用优先级队列有什么好处?
考虑到其中一个构造函数接受 Comparator
... 比较什么就很明显了。默认情况下,除非指定,否则使用 Comparator.naturalOrder()
您可以通过让元素实现来定义优先级 Comparable
interface and offering a Comparator
to construct the queue, see the doc:
The elements of the priority queue are ordered according to their
natural ordering, or by a Comparator provided at queue construction
time.
普通队列按照先到先得的原则处理项目。优先级队列根据项目的优先级确定服务顺序。使用优先级队列,下一个要处理的项目将是优先级最高的项目。
示例:
- 航空公司在 "economy class"
之前登机 "first class" 位顾客
- 医院急诊室先处理心脏病发作、出血和呼吸问题,然后再看其他病人
- 许多餐厅会在普通顾客之前让 VIP 入座,即使后者有预订。
这是具体的东西,它决定了一个系统的实际运行。作为程序员,您的工作是通过提供排序 属性 来识别和反映真实世界的行为。在 Java 中,这是通过使对象 Comparable
或提供 Comparator
.
来完成的
当我们编写和使用优先级队列时,优先级究竟代表什么?它是抽象的还是具体的,例如按不同建筑物的高度排序? 使用优先级队列有什么好处?
考虑到其中一个构造函数接受 Comparator
... 比较什么就很明显了。默认情况下,除非指定,否则使用 Comparator.naturalOrder()
您可以通过让元素实现来定义优先级 Comparable
interface and offering a Comparator
to construct the queue, see the doc:
The elements of the priority queue are ordered according to their natural ordering, or by a Comparator provided at queue construction time.
普通队列按照先到先得的原则处理项目。优先级队列根据项目的优先级确定服务顺序。使用优先级队列,下一个要处理的项目将是优先级最高的项目。
示例:
- 航空公司在 "economy class" 之前登机 "first class" 位顾客
- 医院急诊室先处理心脏病发作、出血和呼吸问题,然后再看其他病人
- 许多餐厅会在普通顾客之前让 VIP 入座,即使后者有预订。
这是具体的东西,它决定了一个系统的实际运行。作为程序员,您的工作是通过提供排序 属性 来识别和反映真实世界的行为。在 Java 中,这是通过使对象 Comparable
或提供 Comparator
.