當您使用沒有比較器的PriorityQueue時,隊列會在每次報價後重新排列,如果是,如何避免?每次添加任何內容到** PriorityQueue **時,它是否會重新排列?
-1
A
回答
1
從Javadoc中:基於優先級堆
的極大優先級隊列。 優先級隊列的元素根據其自然順序排序,或者由隊列構建時提供的Comparator排序,具體取決於使用哪個構造函數。
是的,當添加元素以保持排序時,隊列會重新排列。你無法避免它。如果您沒有提供Comparator
,則使用自然順序(由Compabable
元素類型的實現定義)。如果這不符合您的目的,請不要使用PriorityQueue
。
+0
這不是嚴格正確的。如果必須維護堆屬性,元素纔會重新排列,但在許多情況下,添加的值只會創建新的葉子。這是優先級隊列和排序結構(數組,二叉樹等)之間的區別,以及爲什麼它比後者具有更好的性能。 –
相關問題
- 1. c#ASP - 每次不重新添加內容時調用字典
- 2. 如何在每次重新加載時重新排列div訂單?
- 3. 是否每次查詢PostgreSQL VIEWS時都會新建它們?
- 4. PowerQuery:避免每次添加列時重新加載
- 5. Javascript:當在功能中添加if時,是否需要添加任何內容?
- 6. PriorityQueue是否允許已經在隊列中的元素重新排序?
- 7. SVN更新不會返回任何內容,但它應該是
- 8. 將相鄰的內嵌塊添加到任何內嵌內容
- 9. 我們是否應該每次在solrconfig.xml或schema.xml中添加任何更改時重新導入數據?
- 10. 是否有任何缺點,通過JavaScript添加內容文本,除非它禁用時不會顯示?
- 11. 當重新啓動加載程序時,它會每次創建新線程
- 12. 每當有任何更改時,Canvas是否會重繪本身?
- 13. 添加數據庫條目時,緩存的內容是否會更新?
- 14. 「全部」是否向媒體查詢添加任何內容?
- 15. 重新排列文件的內容
- 16. Eclipse - 在XML內容中單擊刪除/重新排列它?
- 17. 每次重新啓動時更改影片剪輯的內容
- 18. 向DOM添加內容:任何限制?
- 19. PriorityQueue的remove方法重新排列堆嗎?
- 20. 如何將新內容添加到td
- 21. PriorityQueue中未排序上添加
- 22. 將@XmlRootElement添加到每個JAXB bean是否有任何問題?
- 23. 使用putString添加到SharedPreferences文件時,它是否重複?
- 24. 保持光標textarea的每次點擊添加每個內容
- 25. 向會話添加新內容
- 26. 通過JavaScript重新排列之後,wicket是否會丟失HTML組件?
- 27. 如何在vba中添加庫引用,以便每次打開新工作簿時都會添加它?
- 28. 當添加新節點時,榛樹內存中隊列是否會放大?
- 29. RSS:它是否會將信號推出來表示新內容?
- 30. 滾動時重新加載新內容
爲什麼要避免優先隊列重新排列?優先級隊列的整個想法是保持項目的安排,以便最高優先級的項目位於根目錄。如果您不希望數據結構像優先級隊列那樣工作,那麼您不應該使用優先級隊列。 –