一尘不染

Java使用比较器降序排序(用户定义的类)

java

我想使用比较器按降序对对象进行排序。

class Person {
 private int age;
}

在这里,我想对一个Person对象数组进行排序。

我怎样才能做到这一点?


阅读 879

收藏
2020-03-23

共1个答案

一尘不染

你可以使用这种方法来覆盖用户定义的类的降序方法,从而覆盖compare()方法,

Collections.sort(unsortedList,new Comparator<Person>() {
    @Override
    public int compare(Person a, Person b) {
        return b.getName().compareTo(a.getName());
    }
});

或通过使用Collection.reverse()用户Prince在其评论中提到的降序进行排序。

你可以像这样进行升序排序,

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()));

在这里ab通过lambda表达式推断为Person类型。

2020-03-23