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

时间:2018-08-29 13:29:37

标签: language-agnostic priority-queue

当我们编码并使用优先级队列时,优先级到底代表什么?是抽象的还是具体的,例如按不同建筑物的高度排序? 使用优先级队列的好处是什么?

3 个答案:

答案 0 :(得分:2)

普通队列以先到先得的方式处理项目。优先级队列根据项目的优先级确定服务订单。有了优先级队列,下一个要处理的项目将是优先级最高的项目。

示例:

  • 航空公司在“经济舱”之前登上“头等舱”客户
  • 医院急诊室在看其他患者之前先处理心脏病,出血和呼吸问题
  • 即使常规顾客有预订,许多餐馆也会在VIP顾客之前坐上VIP。

这是具体的事情,它确定系统的实际操作。作为程序员的工作是通过提供订购属性来识别和反映现实情况。在Java中,这是通过制作对象Comparable或提供Comparator来完成的。

答案 1 :(得分:1)

您可以通过让元素实现Comparable接口并提供Comparator来构造队列来定义优先级,请参见doc

  

优先级队列的元素根据其顺序进行排序   自然排序,或由队列构造时提供的比较器   时间。

答案 2 :(得分:0)

考虑到构造函数之一接受Comparator ...与之相比,它变得显而易见。默认情况下,除非指定,否则它将使用Comparator.naturalOrder()