Java优先级队列是如何工作的?

Java优先级队列是如何工作的?,java,data-structures,heap,priority-queue,Java,Data Structures,Heap,Priority Queue,我似乎找不到任何信息来回答我的问题。因此,Java是使用堆构建的。堆的插入和删除时间为O(logn),所以如果我对堆进行排序,则为O(nlogn) 但是在创建堆的过程中,只需要O(n)个时间。让我们假设我把线 PriorityQueue堆=新的PriorityQueue(列表); Java是用这些值构建数据结构,使其成为O(n)还是随后插入,使其成为O(nlogn)?您可以随时检查源代码: 当您从未排序的列表初始化它时,它使用O(n)heapify方法。非常感谢。您知道为什么为优先级队列开发代

我似乎找不到任何信息来回答我的问题。因此,Java是使用堆构建的。堆的插入和删除时间为O(logn),所以如果我对堆进行排序,则为O(nlogn)

但是在创建堆的过程中,只需要O(n)个时间。让我们假设我把线

PriorityQueue堆=新的PriorityQueue(列表);

Java是用这些值构建数据结构,使其成为O(n)还是随后插入,使其成为O(nlogn)?

您可以随时检查源代码:


当您从未排序的列表初始化它时,它使用O(n)
heapify
方法。

非常感谢。您知道为什么为优先级队列开发代码的人没有包含一个接受列表和自定义比较器的构造函数吗?我假设您不能使用自定义比较器构建堆?没有充分的理由。您可以使用自定义比较器构建堆。