Reputation: 1879
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:
Upvotes: 2
Views: 9180
Reputation: 39477
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).
Upvotes: 3