如何使用优先队列根据键值对的值进行排序

Posted

技术标签:

【中文标题】如何使用优先队列根据键值对的值进行排序【英文标题】:How to sort based on values of a key-value pair using a Priority-Queue 【发布时间】:2021-10-07 01:04:16 【问题描述】:

我有一个基于键值对的值映射。 例如 [1,2,2,5,3,4,4,1]

如何使用优先级队列根据值对它们进行排序?

需要的输出: [4,1->1,2->3,4->2,5]

【问题讨论】:

*** 不是用于编写代码的服务。请分享您尝试过的代码以及不起作用的代码 【参考方案1】:

您需要在添加到优先级队列的对象类中覆盖方法compareTo: 这是 Employee 类,有两个字段是 id 和salary。 我使用 id 作为键和薪水作为值。然后我会按价值(薪水)排序

@Override
public int compareTo(Employee employee) 
    if(this.getSalary() > employee.getSalary()) 
        return 1;
     else if (this.getSalary() < employee.getSalary()) 
        return -1;
     else 
        return 0;
    

【讨论】:

以上是关于如何使用优先队列根据键值对的值进行排序的主要内容,如果未能解决你的问题,请参考以下文章

优先队列未按正确顺序排序

如何使用优先队列对链表进行排序

数据结构:优先队列

如何对不同队列上的消息进行优先级排序?

高级数据结构(Ⅱ)优先队列

Azure WebJobs 在监控多个队列时如何对消息进行优先级排序?