1. 概念
优先级队列是一种抽象数据类型(ADT),它允许队列中维护的元素按优先级排序,优先级最高的元素会优先被处理。
2. 使用
2.1 优先级队列的构造
构造器
|
功能介绍 |
PriorityQueue()
|
创建一个空的优先级队列,默认容量是11 |
PriorityQueue(int
initialCapacity)
|
创建一个初始容量为
initialCapacity
的优先级队列,注意:
initialCapacity不能小于
1
,否则会抛
IllegalArgumentException
异常
|
PriorityQueue(Collection<?
extends E> c)
|
用一个集合来创建优先级队列 |
代码示例:
public static void main(String[] args) {
// 创建一个空的优先级队列,底层默认容量是11
PriorityQueue<Integer> q1 = new PriorityQueue<>();
// 创建一个空的优先级队列,底层的容量为initialCapacity
PriorityQueue<Integer> q2 = new PriorityQueue<>(100);
ArrayList<Integer> list = new ArrayList<>();
list.add(4);
list.add(3);
list.add(2);
list.add(1);
// 用ArrayList对象来构造一个优先级队列的对象
// q3中已经包含了三个元素
PriorityQueue<Integer> q3 = new PriorityQueue<>(list);
System.out.println(q3.size());
System.out.println(q3.peek());
}
运行结果如下:
注意:默认情况下,
PriorityQueue
队列是小堆,如果需要大堆需要用户提供比较器

2.2 方法
函数名
|
功能介绍 |
boolean offer(E e)
|
插入元素
e
,插入成功返回
true
,如果
e
对象为空,抛出
NullPointerException
异常,注意:空间不够时候会进行扩容
|
|