[英]Java PriorityQueue: how to heapify a Collection with a custom Comparator?
[英]java heapify method using priorityQueue
我在Java程序中將priorityQueue用作最大堆實現。 現在,我需要對創建的堆進行堆計算以計算最大值。 似乎priorityQueue沒有實現heapify方法。 所以我的問題是有沒有要使用priorityQueue處理此問題? 如果不存在,是否有Java中具有heapify方法的Max-heap可靠實現? 請注意,我的程序使用其自己的比較器。 因此,此實現應支持這一點。
一些更多的解釋:
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)
但有個問題:
優先級隊列已經是一個堆,因此它不需要heapify方法。
通常在不是堆的結構上實現此方法。
因此,只需將元素添加到隊列中或從隊列中刪除元素,
假設您的最大元素位於位置0(在根處)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.