java - 优先队列中的元素何时排序?

标签 java data-structures priority-queue

PriorityQueue 类是按优先级插入元素,还是只是在我们轮询元素时才找出最高优先级的元素并返回它?

最佳答案

来自JDK本身的源码(格式化我的):

表示为平衡二叉堆的优先级队列:queue[n] 的两个 child 是 queue[2*n+1]queue[2*(n+1)] .

优先队列按comparator排序,或者按元素的自然顺序,如果比较器为空:对于每个节点 n在堆和每个后代中dn , n <= d .具有最低值的元素在 queue[0] 中,假设队列非空。

因此,您可以将 PriorityQueue 中元素的插入/删除视为提供结果以及堆平衡的操作。

关于java - 优先队列中的元素何时排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54062589/

相关文章:

java - 面向对象设计问题

java - 更改 Apache Commons Math 中数字系统的基数

java - 如何向嵌套 HashMap 中插入记录?

algorithm - 将 O(logn) 中的两个字符串与一些预处理和假设进行比较

java - 使用arraylist的递归方法的stackoverflowerror

Scala::PriorityQueue => 更新特定项的优先级

c++ - 在C++中是否可以使用容器的大小作为priority_queue的优先级?

java - Android 在使用 ListView 和 Bitmap 时出现内存不足错误

java - 我如何说服 JVM 内联接口(interface)方法?

java - 在java中创建优先级队列会出错