PriorityQueue 类是按优先级插入元素,还是只是在我们轮询元素时才找出最高优先级的元素并返回它?
最佳答案
来自JDK本身的源码(格式化我的):
表示为平衡二叉堆的优先级队列:queue[n]
的两个 child 是 queue[2*n+1]
和 queue[2*(n+1)]
.
优先队列按comparator
排序,或者按元素的自然顺序,如果比较器为空:对于每个节点 n
在堆和每个后代中d
的 n
, n <= d
.具有最低值的元素在 queue[0]
中,假设队列非空。
因此,您可以将 PriorityQueue 中元素的插入/删除视为提供结果以及堆平衡的操作。
关于java - 优先队列中的元素何时排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54062589/