一、优先级队列(Priority Queue)
普通的队列是先进先出原则。
优先级队列是按照优先级高低进行出队,比如将优先级最高的元素作为队头优先出队。
使用场景:
医院急诊根据病人病情和挂号时间决定谁先看病。
操作系统的多任务调度,队列元素是任务,优先级是任务类型。
二、优先级队列(Priority Queue)底层实现
通过最大堆来实现优先级队列。
public class PriorityQueue<E> {
private BinaryHeap<E> heap; // 二叉堆
public PriorityQueue(Comparator<E> comparator) {
heap = new BinaryHeap<>(comparator);
}
public PriorityQueue() {
this(null);
}
public int size() {
return heap.size();
}
public boolean isEmpty() {
return heap.isEmpty();
}
public void clear() {
heap.clear();
}
public void enQueue(E element) {
heap.add(element); //入队
}
public E deQueue() {
return heap.remove(); //让优先级最高的元素出队
}
public E front() {
return heap.get(); //获取堆顶元素
}
}
网友评论