在Java中使用優先隊列(PriorityQueue)時,如何自定義對象的排序規則

在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時傳入了這個比較器,這樣隊列就會按照年齡進行排序。

主站蜘蛛池模板: 亚洲综合一区二区精品导航| 国产在线精品一区二区中文| 中文字幕精品一区二区三区视频| 亚洲福利视频一区二区三区| 综合久久一区二区三区| 精品国产一区在线观看| 国产精品一区视频| 无码人妻精品一区二区三| 成人影片一区免费观看| 一区二区三区日本电影| 国产午夜一区二区在线观看| 国产成人久久一区二区不卡三区| 久久精品无码一区二区无码| 日韩精品无码一区二区三区免费| 国产suv精品一区二区33| 中文字幕亚洲一区| 久久se精品一区二区| 亚洲一区二区三区AV无码| 亚洲人成网站18禁止一区| 国产激情一区二区三区 | 国产激情一区二区三区 | 中日韩一区二区三区| 伊人久久精品无码av一区| 中文字幕一区二区三区免费视频 | 韩日午夜在线资源一区二区 | 爆乳熟妇一区二区三区霸乳| 国产一区二区三区福利| 国产AV天堂无码一区二区三区| 在线精品日韩一区二区三区| 精品在线视频一区| 中文字幕精品无码一区二区| 国产一区二区三区不卡AV| 亚洲AV无码一区东京热久久| 亚洲一区精品视频在线| 亚洲AV成人精品一区二区三区| 国产福利酱国产一区二区| 亚洲Aⅴ无码一区二区二三区软件| 国产成人片视频一区二区| 久久精品国产一区二区三区日韩| 精品人伦一区二区三区潘金莲| 亚洲AV无码一区二区三区牛牛|