PriorityQueue中Map.Entry排序规则、比较器及排序方式问询
问题解答
1. PriorityQueue中的Map.Entry条目是如何排序的?
基于Map.Entry的值进行排序,值更大的条目会被赋予更高优先级,出队时会被优先取出。
2. 此PriorityQueue使用的比较器是什么?
使用的是一个Lambda表达式实现的自定义比较器,具体逻辑如下:
(a, b) -> b.getValue() - a.getValue()
这个Lambda实现了Comparator<Map.Entry<Integer, Integer>>接口,通过计算两个条目值的差值来确定排序顺序:
- 若结果为正,说明
b的值大于a,b优先级更高; - 若结果为负,说明
a的值大于b,a优先级更高; - 若结果为0,两者优先级等价。
3. 它是否按照Map中值的降序对队列进行排序?
是的。因为比较器通过b.getValue() - a.getValue()的逻辑,让值更大的条目拥有更高优先级,出队时会按值从大到小的顺序取出元素(注:PriorityQueue基于堆结构,内部并非完全有序,但出队顺序是值的降序)。
内容的提问来源于stack exchange,提问作者Teresa
相关产品推荐
相关产品推荐

