更新Java PriorityQueue 中的優先權
當使用帶有Comparator 的PriorityQueue 進行物件排序時,物件的類別變數的後續變更(基於計算哪個優先順序)提出了挑戰。
傳統上,一個簡單的解決方案包括刪除對象,更新其值,然後重新插入它,觸發優先權隊列的比較器。但是,是否有更有效的替代方法來圍繞 PriorityQueue 建立包裝類別?
答案
不幸的是,刪除和重新插入仍然是最有效的方法。 PriorityQueue 在插入時本質上將新元素插入到適當的位置,從而優化佇列效能。在出隊操作期間搜尋最高優先順序的元素會顯著影響效能。
TreeMap 和 HashMap 都存在此限制(如果元素雜湊碼更改,則會失敗)。
建立包裝類別可能涉及將比較代碼從入隊移動到出隊,從而無需在入隊期間進行排序。然而,這種方法會損害效能並且需要在優先權更新時進行同步。由於無論哪種方式都需要同步,因此出隊和重新入隊提供了更簡單且性能更高的解決方案。
以上是## 您可以在不刪除並重新插入的情況下更新 Java PriorityQueue 中的優先順序嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!