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}
可以看到,按照年齡從小到大的順序來排序了。