如何在java中声明具有双优先级的最大优先级队列?
如何在java中声明具有双优先级的最大优先级队列 这是我试过的如何在java中声明具有双优先级的最大优先级队列?,java,queue,heap,priority-queue,Java,Queue,Heap,Priority Queue,如何在java中声明具有双优先级的最大优先级队列 这是我试过的 PriorityQueue<Double> maxPQ = new PriorityQueue<>(new Comparator<Double>(){ @Override public int compare(double a, double b){ if(a>b){
PriorityQueue<Double> maxPQ = new PriorityQueue<>(new Comparator<Double>(){
@Override
public int compare(double a, double b){
if(a>b){
return 1;
}else if(b>a){
return -1;
}
return 0;
}
});
PriorityQueue maxPQ=新的PriorityQueue(新的比较器(){
@凌驾
公共整数比较(双a,双b){
如果(a>b){
返回1;
}否则,如果(b>a){
返回-1;
}
返回0;
}
});
但它不起作用
感谢您的帮助
谢谢如果不需要任何自定义比较器逻辑,您可以像这样创建一个最大优先级队列
PriorityQueue<Double> maxPQ = new PriorityQueue<Double>(20,Collections.reverseOrder());
PriorityQueue maxPQ=newpriorityqueue(20,Collections.reverseOrder());
若你们需要定制比较器,那个么你们需要在比较器中正确地实现比较方法。
在比较方法的参数中使用Double而不是Double。
或
也可以像lambda表达式一样使用它
PriorityQueue<Double> maxPQ = new PriorityQueue<>((a, b) -> {
if(a>b){
return 1;
}else if(b>a){
return -1;
}
return 0;
});
PriorityQueue maxPQ=新的PriorityQueue((a,b)->{
如果(a>b){
返回1;
}否则,如果(b>a){
返回-1;
}
返回0;
});
您所说的“它不工作”是什么意思?比较器的参数类型必须是Double
。您当前在那里使用double
。