java - 将 Java PriorityQueue 更改为 Max PQ

标签 java priority-queue standard-library

<分区>

Java 标准库中的优先级队列实现似乎是一个最小优先级队列,我发现它有些令人困惑。为了将它变成一个最大值,我创建了一个自定义比较器对象。

Comparator<Integer> cmp = new Comparator<Integer>()
{
    public int compare( Integer x, Integer y )
    {
        return y - x;
    }
};

我想知道是否有更优雅的解决方案。本质上,我不想要一个可用于实现 Dijkstras 等的通用优先级队列。我什至没有意识到会有反向操作的优先级队列:/

最佳答案

这是使用 Collections.reverseOrder() 的代码片段-

    PriorityQueue<Integer> maxPQ = new PriorityQueue<Integer>(20,Collections.reverseOrder());

您还需要提供优先级队列的初始容量(此处为 20)以及比较器。

关于java - 将 Java PriorityQueue 更改为 Max PQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3705881/

相关文章:

java - viewpager 中的 fragment 转换问题

Java - 单个语句中的变量声明、赋值和空值检查

Java 泛型 : How to test if a field type is a specification of a generic class

c++ - seekg 和 seekp:seek(streampos pos) 和 seek(streamoff off, ios::beg) 之间的区别

java - 能够实例化接口(interface)

python - 如何高效地弹出heapq中具有最小键的所有元素?

c++ - 从具有相反顺序的相同结构创建两个优先级队列

c - 二叉堆的所有用途

ocaml - Jane Street 的 ‘Base’ 、 ‘Core’ 和 'Core_kernel' 有什么区别?

c++ - 我如何轻松地使用 char**?