java中PriorityQueue用法
时间: 2024-08-14 20:06:48 浏览: 71
`java.util.PriorityQueue`是一个基于优先堆(二叉堆)的无界队列,它按照元素的自然顺序(对于不可比较的对象)或提供的Comparator进行排序。它的特点是每次取出的是当前队列中优先级最高的元素,也就是最小值(如果实现了Comparable接口),或者按照Comparator提供的规则排列。
在Java中,使用`PriorityQueue`的基本步骤包括:
1. **创建队列**:
```java
PriorityQueue<Integer> queue = new PriorityQueue<>();
```
2. **添加元素**:
```java
queue.offer(10); // 添加元素,自动排序
queue.offer(5);
```
3. **获取元素**:
```java
int highestPriorityElement = queue.poll(); // 获取并移除最高优先级元素(默认是最小值)
```
4. **遍历元素**:
```java
while (!queue.isEmpty()) {
System.out.println(queue.peek()); // 查看当前最高优先级元素
}
```
5. **自定义排序**:
如果元素需要按照自定义规则排序,可以传递一个Comparator对象给构造函数:
```java
PriorityQueue<String> customQueue = new PriorityQueue<>(Comparator.comparing(String::length));
```
阅读全文