在Java中,我应该为首先返回最大元素的PriorityQueue使用什么?

Ben*_*ino 2 java compare compareto

Java的PriorityQueue将最少的元素放在列表的头部,但是我需要它将最大的元素放在头部.什么是获得行为类似的优先级队列的最佳方法.

由于我编写了存储在此队列中的类,因此我可以简单地反转其结果compareTo,而不是在此队列之外使用它.

但是我喜欢让代码准确地表示我正在建模的东西,我想要做的是先获得最大的代码所以代码应该说,而不是至少首先使用不同寻常的定义.

[编辑]只是一个快速的谢谢大家,比较器听起来像我需要的只是我自己如何写一个.

Han*_*Gay 10

传递一个比较器,它在您实例化PriorityQueue时反转自然顺序.

它看起来像这样:

public class ReverseYourObjComparator implements Comparator<YourObj> {
    public int compare(final YourObj arg0, final YourObj arg1) {
        return 0 - arg0.compareTo(arg1);
    }
}
Run Code Online (Sandbox Code Playgroud)