有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用priorityQueue的堆java heapify方法

我在java程序中使用priorityQueue作为最大堆实现。现在我需要对创建的堆进行堆化,以计算最大值。priorityQueue似乎没有实现heapify方法。所以我的问题是,使用priorityQueue处理这个问题是否有任何方法?如果没有,java中是否有任何可靠的Max heap实现具有heapify方法?请注意,我的程序使用自己的比较器。所以这个实现应该支持这一点

还有一些解释:

PriorityQueue<Customer> marginalGainHeap = new PriorityQueue<Customer>(
            1, new Comparator<Customer>() {
                public int compare(Customer c1, Customer c2) {
                    return Double.compare(c1.getMarginalGain(),
                            c2.getMarginalGain());
                }
            });

假设为“节点”对象更改了边际收益值,该对象是“客户”类型。 一个解决办法是

marginalGainHeap.remove(node)
marginalGainHeap.add(node)

但有一个问题:

  • 它给我的程序增加了一些额外的延迟。我想尽可能地提高效率

共 (1) 个答案

  1. # 1 楼答案

    优先级队列已经是堆,因此它不需要heapify方法
    这种方法通常在不是堆的结构上实现

    因此,只需在队列中添加/删除元素,然后
    假设最大元素位于位置0(根)