如何在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){

如何在java中声明具有双优先级的最大优先级队列

这是我试过的

    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