首頁 >Java >java教程 >如何靈活地依照不同屬性對物件清單進行排序?

如何靈活地依照不同屬性對物件清單進行排序?

Barbara Streisand
Barbara Streisand原創
2024-12-04 01:36:10543瀏覽

How Can I Flexibly Sort Lists of Objects by Different Properties?

輕鬆排序物件集合

問題:

在處理物件清單(例如,Person)時,我們如何靈活地按不同的順序排序屬性(例如姓名、年齡或

答案:

雖然Comparable介面允許按單一屬性排序,但更通用的方法是將自訂比較器與 Collections.sort 方法結合使用。類別進行排序的範例:

public class FlexiblePersonComparator implements Comparator<Person> {
    public enum Order { Name, Age, Country }

    private Order sortingBy = Order.Name;

    @Override
    public int compare(Person person1, Person person2) {
        switch (sortingBy) {
            case Name:
                return person1.name.compareTo(person2.name);
            case Age:
                return person1.age.compareTo(person2.age);
            case Country:
                return person1.country.compareTo(person2.country);
        }
        throw new RuntimeException("Practically unreachable code, can't be thrown");
    }

    public void setSortingBy(Order sortBy) {
        this.sortingBy = sortBy;
    }
}

利用比較器:

public void sortPersonsBy(FlexiblePersonComparator.Order sortingBy) {
    List<Person> persons = this.persons;  // Useless line for clarification
    FlexiblePersonComparator comparator = new FlexiblePersonComparator();
    comparator.setSortingBy(sortingBy);
    Collections.sort(persons, comparator); // Sorting the list
}

透過使用自訂比較器,您可以靈活地按任何所需的屬性對物件集合進行排序,提供用於對複雜資料結構進行排序的便捷且多功能的解決方案。

以上是如何靈活地依照不同屬性對物件清單進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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