java里PriorityQueue指定比较器
时间: 2024-07-20 09:00:52 浏览: 86
在Java中,`PriorityQueue`是一个根据元素自然顺序或自定义比较器进行排序的队列。如果你想使用自定义的比较器来决定元素的插入顺序,你需要在创建`PriorityQueue`实例时提供一个`Comparator`对象。
例如:
```java
import java.util.Comparator;
import java.util.PriorityQueue;
// 假设我们有一个Person类,包含name和age字段
class Person {
String name;
int age;
// 定义Person的自然比较器(默认)
@Override
public int compareTo(Person other) {
return Integer.compare(this.age, other.age);
}
}
public class Main {
public static void main(String[] args) {
Comparator<Person> customComparator = new Comparator<Person>() {
// 自定义年龄升序排列
@Override
public int compare(Person p1, Person p2) {
return p1.age - p2.age;
}
};
PriorityQueue<Person> queue = new PriorityQueue<>(customComparator);
queue.add(new Person("Alice", 20));
queue.add(new Person("Bob", 30));
// 队列中的元素按照自定义比较器的顺序
while (!queue.isEmpty()) {
System.out.println(queue.poll());
}
}
}
```
在这个例子中,我们创建了一个名为`customComparator`的匿名内部类实现了`Comparator<Person>`接口,并重写了`compare()`方法。这个比较器会按照人的年龄从年轻到年老进行排序。然后我们用这个比较器初始化了`PriorityQueue`,所以添加的人会按照年龄升序排列。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)