什么是优先队列,它有什么用

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.

来完成的