我最近正在与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/

10-12 03:45