在Java中,使用PriorityQueue
時,可以通過實現Comparator
接口來自定義對象的排序規則。以下是一個簡單的示例:
import java.util.Comparator;
import java.util.PriorityQueue;
class Person {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
class AgeComparator implements Comparator<Person> {
@Override
public int compare(Person p1, Person p2) {
return Integer.compare(p1.age, p2.age); // 按年齡升序排列
}
}
public class Main {
public static void main(String[] args) {
PriorityQueue<Person> queue = new PriorityQueue<>(new AgeComparator());
queue.add(new Person("Alice", 30));
queue.add(new Person("Bob", 25));
queue.add(new Person("Charlie", 35));
while (!queue.isEmpty()) {
System.out.println(queue.poll());
}
}
}
在這個示例中,我們創建了一個Person
類和一個實現了Comparator
接口的AgeComparator
類。AgeComparator
類中的compare
方法定義了如何比較兩個Person
對象。然后,我們在創建PriorityQueue
時傳入了這個比較器,這樣隊列就會按照年齡進行排序。