简体   繁体   中英

java heapify method using priorityQueue

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.

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).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM