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

问题描述 投票:0回答:2

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

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

所需输出: [{4,1}->{1,2}->{3,4}->{2,5}]

java priority-queue
2个回答
0
投票

您可以像这样初始化优先级队列:

PriorityQueue<Pair<Integer,Integer> queue = new PriorityQueue<>(Comparator.comparing(Pair::getKey());

更多信息可以在这里找到:https://www.geeksforgeeks.org/priority-queue-of-pair-in-java-with-examples/


-1
投票

您需要重写添加到优先级队列的对象类中的方法

compareTo
: 这是 Employee 类,有两个字段:id 和工资。 我使用 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;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.