设计背景
普通队列是先入队的元素先出队,它的权重衡量是入队的先后,我们希望设计一种按照特定衡量标准进行优先级排序的队列,这种队列就叫做优先队列(Priority Queue)
结构分析
【底层实现】Heap等
【核心方法】同队列
代码实现
利用最大堆(MaxHeap)实现优先队列:
public class PriorityQueue<E extends Comparable<E>> implements Queue<E> {
private MaxHeap<E> maxHeap;
public PriorityQueue() {
maxHeap = new MaxHeap<>();
}
@Override
public void enqueue(E e) {
maxHeap.add(e);
}
@Override
public E dequeue() {
return maxHeap.extractMax();
}
@Override
public E getFront() {
return maxHeap.findMax();
}
@Override
public boolean isEmpty() {
return maxHeap.isEmpty();
}
@Override
public int getSize() {
return maxHeap.size();
}
}