首頁 >Java >java教程 >如何按多個欄位(姓名和年齡)對 Java 物件進行排序?

如何按多個欄位(姓名和年齡)對 Java 物件進行排序?

Susan Sarandon
Susan Sarandon原創
2024-12-15 19:58:16462瀏覽

How to Sort Java Objects by Multiple Fields (Name and Age)?

以多個欄位對Java 物件排序:姓名和年齡

考慮一個Person 物件數組,每個物件包含一個整數年齡和一個字串名稱。按名稱字母順序然後按年齡對這樣的陣列進行排序需要自訂排序演算法。

使用 Collections.sort

Java Collections函式庫提供了內建排序方法您可以利用:

private static void order(List<Person> persons) {
    Collections.sort(persons, new Comparator<>() {
        @Override
        public int compare(Object o1, Object o2) {
            // Compare by name (lexicographically)
            String x1 = ((Person) o1).getName();
            String x2 = ((Person) o2).getName();
            int sComp = x1.compareTo(x2);
            // If names are different, return result
            if (sComp != 0) {
                return sComp;
            }
            // If names are equal, compare by age
            Integer x1 = ((Person) o1).getAge();
            Integer x2 = ((Person) o2).getAge();
            return x1.compareTo(x2);
        }
    });
}

流程Flow

  1. 透過實作compare方法實例化一個Comparator。
  2. 比較兩個物件的名稱(按字母順序)。如果不同,則傳回結果。
  3. 如果名字相等,則比較年齡並傳回結果。

透過使用此自訂比較器呼叫 Collections.sort,您可以對陣列進行排序Person 物件的數量按姓名升序排列,然後是年齡升序排列。

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn