使用stream()按元素属性的Java排序列表[重复]

Posted

技术标签:

【中文标题】使用stream()按元素属性的Java排序列表[重复]【英文标题】:Java sorting list by element property with stream() [duplicate] 【发布时间】:2019-01-31 16:12:13 【问题描述】:
public static List<Student> getStudents(List<Student> students) 
        return students.stream(). // rest of the code comes here.

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

示例类:

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...

【问题讨论】:

【参考方案1】:

return 语句可以很简单:

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

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

【讨论】:

以上是关于使用stream()按元素属性的Java排序列表[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何按整数属性对类列表进行排序? [复制]

Java 8:按属性对对象列表进行排序,无需自定义比较器

Java stream常用实例代码

java使用stream对日期排序

java按可指定属性对对象列表进行排序

Java 8 流:迭代列表映射