我想使用比较器按降序对对象进行排序。
class Person { private int age; }
在这里,我想对一个Person对象数组进行排序。
我怎样才能做到这一点?
你可以使用这种方法来覆盖用户定义的类的降序方法,从而覆盖compare()方法,
Collections.sort(unsortedList,new Comparator<Person>() { @Override public int compare(Person a, Person b) { return b.getName().compareTo(a.getName()); } });
或通过使用Collection.reverse()用户Prince在其评论中提到的降序进行排序。
Collection.reverse()
你可以像这样进行升序排序,
Collections.sort(unsortedList,new Comparator<Person>() { @Override public int compare(Person a, Person b) { return a.getName().compareTo(b.getName()); } });
我们用简洁的Lambda表达式(从Java 8开始)替换上面的代码:
Collections.sort(personList, (Person a, Person b) -> b.getName().compareTo(a.getName()));
从Java 8开始,List具有sort()方法,该方法将Comparator作为参数(更简洁):
personList.sort((a,b)->b.getName().compareTo(a.getName()));
在这里a,b通过lambda表达式推断为Person类型。
a
b