[英]Java 8: Idiomatically creating a Comparator for ordering objects based on their index in a List
[英]Order objects based on ordering of member variables without comparator
說我有一個對象
Person
private int age;
private String name;
我想使用Arrays.sort()
類的東西對它們進行自動Arrays.sort()
,以使低齡出現在高齡之前。
常用的方法是使用比較器,但是我那里有許多有用的實用程序功能,是否有更干凈的方法可以做到這一點?
使您的班級實現Comparable
。
lambdaj
的示例解決了您的用例:
List<Person> sortedByAgePersons = sort(persons, on(Person.class).getAge());
將Java 8與Lambda結合使用:
personList.sort((p1, p2) -> Integer.compare(p1.age, p2.age));
要么
Collections.sort(personList, (p1, p2) -> Integer.compare(p1.age, p2.age));
犯了錯誤
您還可以實現接口Comparable並重寫compareTo(...)方法。
這些不能保證其清潔的方法,但是它們只是比較的不同方法。 僅當您要以不遵循自然順序的方式對對象進行排序時,使用Comparator才有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.