java priorityqueue comparator
时间: 2023-08-27 22:19:37 浏览: 107
在Java中,PriorityQueue是一个优先级队列,它根据元素的优先级进行排序。当元素被插入队列时,会根据元素的比较规则进行排序。
要使用Comparator来定义PriorityQueue的排序规则,你可以创建一个实现了Comparator接口的类,并在PriorityQueue的构造函数中传入该Comparator对象。
下面是一个使用Comparator来定义PriorityQueue排序规则的示例:
```java
import java.util.Comparator;
import java.util.PriorityQueue;
public class Main {
public static void main(String[] args) {
// 创建一个自定义的Comparator来定义排序规则
Comparator<Integer> comparator = new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
// 按照降序排列
return o2 - o1;
}
};
// 使用自定义的Comparator创建PriorityQueue
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(comparator);
// 插入元素
priorityQueue.offer(5);
priorityQueue.offer(2);
priorityQueue.offer(8);
// 输出队列中的元素
while (!priorityQueue.isEmpty()) {
System.out.println(priorityQueue.poll());
}
}
}
```
在这个示例中,我们创建了一个降序的PriorityQueue,通过自定义的Comparator来定义元素的排序规则。在Comparator中,我们实现了compare方法来比较两个元素的大小,返回正数表示o1大于o2,返回负数表示o1小于o2,返回0表示两者相等。
输出结果将会是:
```
8
5
2
```
这是因为我们定义了降序的排序规则,所以优先队列中的元素会按照降序排列。
阅读全文
相关推荐


















