我有一个基于键值对的值映射。 例如 [{1,2},{2,5},{3,4},{4,1}]
如何使用优先级队列根据值对它们进行排序?
所需输出: [{4,1}->{1,2}->{3,4}->{2,5}]
您可以像这样初始化优先级队列:
PriorityQueue<Pair<Integer,Integer> queue = new PriorityQueue<>(Comparator.comparing(Pair::getKey());
更多信息可以在这里找到:https://www.geeksforgeeks.org/priority-queue-of-pair-in-java-with-examples/
您需要重写添加到优先级队列的对象类中的方法
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;
}
}