java - 使用 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...
}
解决方案
return 语句可以很简单:
return students.stream()
.sorted(Comparator.comparingDouble(Student::getAverage).reversed())
.collect(Collectors.toList());
Comparator.comparingInt(Student::getAverage)
返回一个比较学生average
字段的比较器(假设是 getter),并reversed()
反转自然顺序。
推荐阅读
- ios - Threejs 3D 对象有时会在 Safari 上消失
- reactjs - 为什么反应路由器中的嵌套路由不起作用?
- python - 在 pandas 数据集中使用 If 语句
- cytoscape.js - 查看当前附加的事件监听器列表
- function - 如何在 zsh 中创建可以接受乱序参数的脚本?
- sql - 没有数据时避免异常
- javascript - 如何将 postMessageToChannel 中的按钮发布到松弛通道并在单击按钮时调用函数?
- java - 错误:找不到合适的方法 setQuery(com.google.firebase.firestore.Query,Class
) - c# - 以编程方式获取站点列表的不同方法
- flutter - 输入'LabeledGlobalKey
>' 不是“GlobalKey”类型的子类型