java heapify method using priorityQueue

依然范特西╮ 提交于 2019-12-08 08:06:19

问题


I used priorityQueue as a max-heap implementation in my java program. Right now I need to heapify the created heap for calculating the maximum value. It seems that priorityQueue does not implement heapify method. So my question would be is there anyway for handling this problem using priorityQueue? If no, is there any reliable implementation for Max-heap in java that has heapify method? Note that my program use its own comparator. So this implementation should support that.

Some more explanation:

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

Suppose a marginalGain value changed for "node" object which is a type of "Customer". one solution would be

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

but there is a problem:

  • It adds some extra latency to my program. I want to be as efficient as possible.

回答1:


A priority queue is already a heap, so it does not need a heapify method.
This method is usually implemented on structures which are not heaps.

So just add/remove elements to/from your queue and just
assume you have the max elements at position 0 (at the root).



来源:https://stackoverflow.com/questions/21985370/java-heapify-method-using-priorityqueue

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!