Java 的 PriorityQueue 与 min-hestore 有何不同?
2022-08-31 12:40:51
如果您无法插入WithPriority,他们为什么要命名?它似乎与堆非常相似。有什么区别吗?如果没有区别,那么为什么它被命名而不是堆?PriorityQueue
PriorityQueue
如果您无法插入WithPriority,他们为什么要命名?它似乎与堆非常相似。有什么区别吗?如果没有区别,那么为什么它被命名而不是堆?PriorityQueue
PriorityQueue
默认的优先级队列是使用最小堆实现的,即最上面的元素是堆中的最小元素。
为了实现最大堆,您可以创建自己的比较器:
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());
对于最大堆,您可以使用:
PriorityQueue<Integer> queue = new PriorityQueue<>(10, Collections.reverseOrder());