問題:
在處理物件清單(例如,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中文網其他相關文章!