PriorityQueue使用方法
时间: 2023-10-29 14:55:50 浏览: 101
PriorityQueue是Java中的一个实现了Queue接口的类,它是基于优先级堆的数据结构。PriorityQueue常用于需要根据元素的优先级来进行排序和处理的场景。下面是PriorityQueue的使用方法:
1. 创建PriorityQueue对象:可以使用无参构造函数创建一个默认的PriorityQueue对象,也可以使用带有Comparator参数的构造函数来定义自定义的排序规则。
2. 添加元素:可以使用`offer(E e)`方法向PriorityQueue中添加元素,该方法会根据元素的优先级将元素插入到正确的位置。
3. 删除元素:可以使用`poll()`方法从PriorityQueue中删除并返回队头的元素,该方法会同时调整剩余元素的顺序,使得队列继续保持有序状态。
4. 获取队头元素:可以使用`peek()`方法获取队头的元素,该方法不会删除元素。
5. 判断队列是否为空:可以使用`isEmpty()`方法判断PriorityQueue是否为空。
下面是一个示例代码,展示了PriorityQueue的使用方法:
```
PriorityQueue<Integer> p = new PriorityQueue<>();
p.offer(5);
p.offer(1);
p.offer(3);
p.offer(6);
p.offer(8);
while (!p.isEmpty()) {
System.out.println(p.poll());
}
```
以上代码会输出排序后的元素:1, 3, 5, 6, 8。
如果你想改变PriorityQueue的排序规则,你可以使用带有Comparator参数的构造函数或者在创建PriorityQueue对象后使用`comparator()`方法进行设置。例如:
```
PriorityQueue<Integer> queue = new PriorityQueue<>((o1, o2) -> o2 - o1);
```
以上代码会创建一个按照从大到小排序的PriorityQueue对象。或者:
```
PriorityQueue<Integer> queue = new PriorityQueue<>(Comparator.reverseOrder());
```
以上代码也会创建一个按照从大到小排序的PriorityQueue对象。
阅读全文