我正在尝试创建一个优先级队列,其中的键将为Total()= getCost()+ getTax()。我正在像这样设置优先级队列:
PriorityQueue<Node> pq = new PriorityQueue<Node>(50);
我一直在寻找有关优先级队列的内容,并且阅读了有关比较器的内容,但我仍然一无所获。如何使用以下方法为优先级队列设置密钥?
获得总计的方法:
public int compareTo(Node y){
if (getCost() + getTax() > y.getCost() + y.getTax())
return 1;
else if (getCost() + getTax() < y.getCost() + y.getTax())
return -1;
return 0;
}
最佳答案
初始化PriorityQueue
时,可以直接通过Comparator:
PriorityQueue<Node> pq = new PriorityQueue<Node>(50, (x, y) -> {
if (x.getCost() + x.getTax() > y.getCost() + y.getTax())
return 1;
else if (x.getCost() + x.getTax() < y.getCost() + y.getTax())
return -1;
return 0;
});