PriorityBlockingQueue 何时对元素进行排序?

use*_*552 2 java priority-queue blockingqueue

我有一个PriorityBlockingQueue包含元素列表的元素。我已经实现了 Comparable 接口并覆盖了compareTo()以定义哪个元素小于,等于 o 大于其他元素。

所以我想知道优先队列是如何工作的,也就是说,它什么时候对它的元素进行排序?自动处理队列中的任何事件(添加、删除、修改)?

谁能向我解释优先队列是如何工作的?我不清楚。

Jir*_*sek 5

事实上,PriorityQueuePriorityBlockingQueue委托人)根本不对元素进行排序- 它使用堆数据结构代替。此结构仅保证根据请求提供最小(或最大)元素,并且不会实际对整个集合进行排序。

底层数据结构的工作方式是排序只是部分的(仅根据需要完成尽可能多的工作以确保最小/最大元素位于堆顶部),并且每当插入元素或当顶部元素被删除。