Java 的 PriorityQueue 与 min-hestore 有何不同?

2022-08-31 12:40:51

如果您无法插入WithPriority,他们为什么要命名?它似乎与堆非常相似。有什么区别吗?如果没有区别,那么为什么它被命名而不是堆?PriorityQueuePriorityQueue


答案 1

默认的优先级队列是使用最小堆实现的,即最上面的元素是堆中的最小元素。

为了实现最大堆,您可以创建自己的比较器:

import java.util.Comparator;

public class MyComparator implements Comparator<Integer>
{
    public int compare( Integer x, Integer y )
    {
        return y - x;
    }
}

因此,您可以通过以下方式创建最小堆和最大堆:

PriorityQueue minHeap=new PriorityQueue();
PriorityQueue maxHeap=new PriorityQueue(size, new MyComparator());

答案 2

对于最大堆,您可以使用:

PriorityQueue<Integer> queue = new PriorityQueue<>(10, Collections.reverseOrder());

推荐