Java PriorityQueue.remove()时间复杂度? O(log N)或O(N)?

时间:2020-02-01 17:11:40

标签: java priority-queue

PriorityQueue pq =新的PriorityQueue <>(); 假设priorityQueue pq的大小为N,那么pq.remove()的时间复杂度是多少?

是O(log N)还是O(N)?

1 个答案:

答案 0 :(得分:5)

来自the documentation of PriorityQueue

[...]

实施说明:此实现为入队和出队方法(offerpollremove()add)提供O(log(n))时间; remove(Object)contains(Object)方法的线性时间;以及检索方法(peekelementsize)的恒定时间。

[...]

但是,应该指出,这不是任何接口合同的一部分。因此,这是一个实现细节。因此,它可能会更改,恕不另行通知,或者使用非Oracle JDK时,因此不应依赖。