Java PriorityQueue首先返回最少的元素

ira*_*ght 3 java data-structures

Java中的PriorityQueue的javadoc表示:此队列的头部是指定排序的最小元素.

有谁知道这个类是打算用作堆还是恰好适合堆描述?如果它应该是一个堆,那么我很困惑为什么他们选择通过remove()返回"最少"元素 - 为什么'最少'元素具有最优先权或者像'最大'堆中使用的"最老的"元素?

提前致谢

Pop*_*ops 6

堆不一定应该归还最大元素.这样做的堆称为max-sheaps.Java堆是min-heap,它们是完全相同的结构,除了它们在排序/比较步骤中使用大于号而不是小于号.

在查看源代码/文档PriorityQueue并浏览JLS之后,我看不到任何指示为什么选择min超过最大值的内容.它可能只是归结为硬币翻转,或者价值组通常从1变为n,其中1是头部且最不可能的值.