我最近正在与MinMaxPriorityQueue
合作。我的目标是从某些文本文件中获取顶级元素。队列正在使用Ordering.natural()
,但是,我想将其更改为Ordering.natural().reverse()
。它没有用,我不知道如何设置。
Comparator<Long> comp = Ordering.natural().reverse();
MinMaxPriorityQueue<Long> pq = MinMaxPriorityQueue.maximumSize(11).create();
pq.orderedBy(comp);
System.out.println(pq.comparator());
输出始终返回
Ordering.natural()
。我该如何处理?非常感谢!
最佳答案
您必须在创建队列时传递Comparator
,否则它将Ordering.natural()
作为默认顺序。根据javadocs
如果在构造时未给出比较器,则使用元素的自然顺序。
因此,如果您需要反向排序,请通过传递Comparator
来创建队列
Comparator<Long> comp = Ordering.natural().reverse();
MinMaxPriorityQueue<Long> pq = MinMaxPriorityQueue.orderedBy(comp).maximumSize(11).create();
关于java - 在MinMaxPriorityQueue Guava 中更改比较器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31277959/