我目前正在阅读Deitel撰写的Java How to program book,其中一些措辞似乎令人困惑。我想知道是否有人可以解释这一点,因为它似乎有误导性。
在向PriorityQueue添加元素时,元素按优先级顺序插入,以使最高优先级元素(即最大值)成为从PriorityQueue中删除的第一个元素。
让我感到困惑的部分就是说要删除最高优先级元素(最大值)。根据该声明,如果我在一个PriorityQueue中添加9.8,5.4和3.2,那么我希望它按顺序删除/轮询PriorityQueue,无论我在插入它时将它们放入的顺序是什么。
然而,在我的代码示例中,我注意到了相反的情况。删除元素的顺序首先是最小的。当读取javadoc时,我看到它所说的位置"这个队列的头部是与指定顺序相关的最小元素",这与我在代码示例中使用的内容一致。
这是否意味着这本书是错误的,还是我只是没有理解这本书用来描述这个概念的措辞?
答案 0 :(得分:0)
"最大的价值"是一些粗心的措辞。
优先级队列可以根据可能的任何排序方案返回元素(因为它们接受自定义比较器),但默认情况下,它们根据其自然顺序返回元素。"在Java中,较低的数字来自"之前"更大的数字。
您可以在Oracle文档中查看一些主要类(包括每个基元的包装器)的自然排序:https://docs.oracle.com/javase/tutorial/collections/interfaces/order.html