本文介绍了将priorityQueue更改为max priorityqueue的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Java的Integers中有优先级队列:

I have priority queue in Java of Integers:

 PriorityQueue<Integer> pq= new PriorityQueue<Integer>();

当我调用 pq.poll()我得到最小元素。

When I call pq.poll() I get the minimum element.

问题:如何更改代码以获取最大元素?

Question: how to change the code to get the maximum element?

推荐答案

如何这样:

PriorityQueue<Integer> queue = new PriorityQueue<>(10, Collections.reverseOrder());
queue.offer(1);
queue.offer(2);
queue.offer(3);
//...

Integer val = null;
while( (val = queue.poll()) != null) {
    System.out.println(val);
}

Collections.reverseOrder()提供了一个 Comparator ,它将按照与它们的自然顺序相反的顺序对 PriorityQueue 这种情况。

The Collections.reverseOrder() provides a Comparator that would sort the elements in the PriorityQueue in a the oposite order to their natural order in this case.

这篇关于将priorityQueue更改为max priorityqueue的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-19 14:35