温馨提示×

java优先队列怎么自定义排序

小亿
370
2023-06-19 13:44:55
栏目: 编程语言

Java优先队列可以通过实现Comparator接口来自定义排序。Comparator接口有一个compare方法,用于比较两个元素的大小。在compare方法中,我们可以根据自己的需求来定义比较规则。

下面是一个例子,我们定义一个Person类,包含姓名和年龄两个属性,然后按照年龄从小到大的顺序来排序:

import java.util.Comparator;
import java.util.PriorityQueue;
public class Main {
public static void main(String[] args) {
PriorityQueue<Person> queue = new PriorityQueue<>(new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
return o1.getAge() - o2.getAge();
}
});
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());
}
}
static class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
}

输出结果为:

Person{name='Bob', age=20}
Person{name='Alice', age=25}
Person{name='Charlie', age=30}

可以看到,按照年龄从小到大的顺序来排序了。

0