priority_queue降序java
时间: 2023-06-04 15:08:42 浏览: 110
我可以为您解答这个问题。在 Java 中,我们可以使用 PriorityQueue 类来实现堆数据结构。默认情况下,它是一个最小堆,但我们可以通过提供自定义比较器来实现最大堆。具体来说,我们可以创建一个比较器对象,并使用它作为 PriorityQueue 构造函数的参数来创建一个降序的堆。以下是示例代码:
```java
import java.util.Comparator;
import java.util.PriorityQueue;
public class Main {
public static void main(String[] args) {
PriorityQueue<Integer> pq = new PriorityQueue<>(Comparator.reverseOrder());
pq.add(3);
pq.add(1);
pq.add(2);
while (!pq.isEmpty()) {
System.out.println(pq.poll()); // 输出 3 2 1
}
}
}
```
在上面的代码中,我们创建了一个 Integer 类型的 PriorityQueue,并提供了一个比较器对象 `Comparator.reverseOrder()`,它会按照降序排列元素。我们向堆中添加 3、1、2 三个元素,然后通过 poll 方法依次从堆中弹出元素并输出到控制台。输出结果是 3、2、1,符合我们预期的降序排列。
阅读全文