Java优先队列自定义排序
时间: 2023-11-29 15:42:04 浏览: 209
优先队列-java可以选择属性和升序降序
可以通过实现 Comparator 接口来自定义 Java 优先队列的排序方式。具体步骤如下:
1. 创建一个实现 Comparator 接口的类,重写 compare 方法。
2. 在创建优先队列时,将自定义的比较器作为参数传入。
例如,假设我们有一个 Person 类,包含 name 和 age 两个属性,我们想按照 age 从小到大的顺序来排序,可以这样实现:
```
import java.util.Comparator;
import java.util.PriorityQueue;
public class Main {
public static void main(String[] args) {
PriorityQueue<Person> queue = new PriorityQueue<>(new AgeComparator());
queue.offer(new Person("Alice", 25));
queue.offer(new Person("Bob", 20));
queue.offer(new Person("Charlie", 30));
while (!queue.isEmpty()) {
System.out.println(queue.poll());
}
}
}
class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return name + " (" + age + ")";
}
}
class AgeComparator implements Comparator<Person> {
@Override
public int compare(Person p1, Person p2) {
return Integer.compare(p1.age, p2.age);
}
}
```
输出结果为:
```
Bob (20)
Alice (25)
Charlie (30)
```
阅读全文