当您使用没有比较器的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. 滚动时重新加载新内容
为什么要避免优先队列重新排列?优先级队列的整个想法是保持项目的安排,以便最高优先级的项目位于根目录。如果您不希望数据结构像优先级队列那样工作,那么您不应该使用优先级队列。 –