java - Java流averagingInt由多个参数
问题描述
我有一堂课
static class Student {
private String surname;
private String firstName;
private String secondName;
private int yearOfBirth;
private int course;
private int groupNumber;
private int mathGrade;
private int engGrade;
private int physicGrade;
private int programmingGrade;
private int chemistryGrade;
还有一种方法可以将学生添加到课程的地图中
public Map<Integer, Double> averageInt(List<Student> students) {
Map<Integer, Double> map2 = students.stream()
.collect(Collectors.groupingBy(Student::getCourse,
Collectors.averagingInt(Student::getEngGrade)));
return map2;
}
但是,我需要同时在一张地图中使用多个平均值。不仅是engGrade,还有mathGrade、programmingGrade等等。我认为这种情况下的代码应该是格式Map<Integer, List<Double>>
,但我不知道该怎么做。请告诉我
例如,我现在显示"Course = 1, average eng grade = ..."
而我需要显示"Course = 1, average eng grade = ..., average math grade = ..."
,即让map中有多个Double值
解决方案
我建议使用这种方法
public static Map<Integer, Double> averageInt(List<Student> students, ToIntFunction<? super Student> mapper) {
Map<Integer, Double> map2 = students.stream()
.collect(Collectors.groupingBy(Student::getCourse, Collectors.averagingInt(mapper)));
return map2;
}
并像这样使用它
Student.averageInt(students, Student::getMathGrade);
Student.averageInt(students, Student::getProgrammingGrade);
推荐阅读
- jquery - 如何保持所有页面的主题颜色
- c - openssl/rsa.h:C windows 中没有这样的文件或目录
- spring-boot - 如何运行一次性脚本来操作 jpa 实体数据并跟踪环境?
- azure - Azure Active Directory - 添加具有多个机构/角色的用户
- java - 泛型、继承和类型擦除问题
- postman - 使用签入 git repo 的邮递员测试集合 json 的最佳实践?
- java - jnlp 中的 jar 资源未由相同的证书 ETRADE Pro 应用程序 Kubuntu 18.04 签名
- google-analytics - 谷歌分析目标不跟踪事件
- nginx - Nginx 日志位置
- command-prompt - 在命令提示符下编译任何程序的速度是多少