如何在java中用double声明最大优先级队列?

pkmbmrz7  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(261)

**结束。**此问题需要详细的调试信息。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

上个月关门了。
改进这个问题
如何在java中声明具有double的最大优先级队列?
这是我试过的。

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;
            }
        });

但它不起作用。
感谢您的帮助。
谢谢

pengsaosao

pengsaosao1#

如果您不需要任何定制的比较器逻辑,您可以像这样创建一个最大优先级队列。

PriorityQueue<Double> maxPQ = new PriorityQueue<Double>(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;
                });

相关问题