首頁 > Java > java教程 > 如何按多個欄位(名稱然後年齡)對 Java 物件陣列進行排序?

如何按多個欄位(名稱然後年齡)對 Java 物件陣列進行排序?

Susan Sarandon
發布: 2024-12-19 00:38:13
原創
675 人瀏覽過

How to Sort a Java Array of Objects by Multiple Fields (Name then Age)?

Java 中按多個欄位排序

對資料進行排序是Java 中的一項常見任務,尤其是在處理複雜對象時。當按多個欄位排序時,操作順序變得至關重要。讓我們考慮一個場景:

挑戰:

給定一個具有年齡和名稱屬性的Person 物件數組,如何按名稱的字母順序排序該數組,然後按年齡排序?什麼演算法適合這個任務?

解:

為了按多個欄位對物件集合進行排序,Java 提供了 Collections.sort。這可以使用比較器來定義排序邏輯來實現。以下是實現它的方法:

private static void order(List<Person> persons) {

    Collections.sort(persons, new Comparator() {

        public int compare(Object o1, Object o2) {

            String x1 = ((Person) o1).getName();
            String x2 = ((Person) o2).getName();
            int sComp = x1.compareTo(x2);

            if (sComp != 0) {
                return sComp;
            } 

            Integer x1 = ((Person) o1).getAge();
            Integer x2 = ((Person) o2).getAge();
            return x1.compareTo(x2);
    }});
}
登入後複製

此排序演算法首先比較物件的名稱。如果名字相同,則會比較他們的年齡。 CompareTo 方法用於字串和整數比較。

演算法:

這裡使用的演算法是合併排序和快速排序的混合。 Collections.sort 使用 Timsort 的變體,這是一種高效的混合排序演算法,它利用了數組按名稱部分排序的事實。

結果:

執行 order 方法後,提供的 Person 物件清單將按姓名字母順序排序,然後按年齡排序。

以上是如何按多個欄位(名稱然後年齡)對 Java 物件陣列進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板