java - 使用 Comparator 降序排序(用户定义的类)

标签 java

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

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()his comment中提到的用户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 类型。

关于java - 使用 Comparator 降序排序(用户定义的类),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1946668/

相关文章:

java - 拦截器被调用2次以上

java - FilePickerActivity.EXTRA_MODE、FilePickerActivity.MODE_FILE

java - Spring Data Rest 和 Cors

java - 从数字字符串 setBackgroundResource 导致 fatal error - Android/Java

java - JPA 引用 : are there any guarantees related to field contents?

java - 尝试使用 Tomcat 在 Windows 中安装 openCMS,它显示 404 错误

java - 确定 SWT 中的焦点

java - 循环数组来绘制标记

java - PrintWriter 到多个文件

java - 为什么这个单元测试说我的目录不存在,而它却存在?