首页 > 解决方案 > 使用 stream() 按元素属性对 Java 列表进行排序

问题描述

public static List<Student> getStudents(List<Student> students) {
        return students.stream(). // rest of the code comes here.
}

我想返回一个List<Student>包含按平均降序排列的学生。我必须在方法中使用 lambda 表达式stream()

示例类:

public class Student {

    private String name;
    private int birthYear;
    private double average;

    public Student(String name, int birthYear, double average) {
        this.name = name;
        this.birthYear = birthYear;
        this.average = average;
    }
    ...getters and setters...
}

标签: javasortinglambdajava-stream

解决方案


return 语句可以很简单:

return students.stream()
        .sorted(Comparator.comparingDouble(Student::getAverage).reversed())
        .collect(Collectors.toList());

Comparator.comparingInt(Student::getAverage)返回一个比较学生average字段的比较器(假设是 getter),并reversed()反转自然顺序。


推荐阅读