我在我的java程序中使用了priorityQueue作爲最大堆實現。現在我需要堆積創建的堆來計算最大值。看來priorityQueue沒有實現heapify方法。所以我的問題是有無論如何使用priorityQueue來處理這個問題?如果不是,有什麼可靠的實現最大堆在Java中heapify方法?請注意我的程序使用自己的比較器。所以這個實現應該支持。java heapify method using priorityQueue
一些更多的解釋:
PriorityQueue<Customer> marginalGainHeap = new PriorityQueue<Customer>(
1, new Comparator<Customer>() {
public int compare(Customer c1, Customer c2) {
return Double.compare(c1.getMarginalGain(),
c2.getMarginalGain());
}
});
假設改變「節點」對象,其是一種類型的「客戶」的marginalGain值。 一個解決辦法是
marginalGainHeap.remove(node)
marginalGainHeap.add(node)
,但有一個問題:
- 它增加了一些額外的延遲我的計劃。我希望儘可能高效。
你想做什麼,爲什麼? – immibis
所以如果它是優先級隊列,那麼你在隊列的開始(或結束)有最大值? – FazoM
我要檢索更新堆中的某些值並檢索最大值(根) –