我有以下两个列表,我正在尝试打印(通过Java Stream)每个课程的平均值和名称。我的代码输出现在只给出了第一个课程的名称和总和,但我没有得到其他课程的名称和总和
我如何修复我的代码?这是我的代码:
courses.stream()
.forEach(action -> System.out.println(action.getName()+" "
+students.stream()
.mapToDouble(f->f.getGrades().stream()
.filter(predicate->predicate.getCourse()
.getName()
.equals(action.getName()))
.findFirst()
.get()
.getValue())
.sum() ));`列表如下:
List<Student> students = new LinkedList<Student>() {{
add(
new Student("Moshe", 21, 1, new LinkedList<Grade>() {{
add(new Grade(courses.stream().filter(c -> c.getId() == 30).findFirst().get(), 67));
add(new Grade(courses.stream().filter(c -> c.getId() == 32).findFirst().get(), 89));
add(new Grade(courses.stream().filter(c -> c.getId() == 35).findFirst().get(), 67));
add(new Grade(courses.stream().filter(c -> c.getId() == 37).findFirst().get(), 89));
}})
);
add(
new Student("Yossi", 26, 2, new LinkedList<Grade>() {{
add(new Grade(courses.stream().filter(c -> c.getId() == 30).findFirst().get(), 100));
add(new Grade(courses.stream().filter(c -> c.getId() == 32).findFirst().get(), 67));
add(new Grade(courses.stream().filter(c -> c.getId() == 35).findFirst().get(), 89));
}})
);
add(
new Student("Natasha", 30, 3, new LinkedList<Grade>() {{
add(new Grade(courses.stream().filter(c -> c.getId() == 30).findFirst().get(), 67));
add(new Grade(courses.stream().filter(c -> c.getId() == 37).findFirst().get(), 80));
}})
);
}};
List<Course> courses = new LinkedList<Course>() {{
add(new Course(30, "Data Structures", 3.5f));
add(new Course(32, "Geometry", 6));
add(new Course(35, "Algebra", 2.5f));
add(new Course(37, "English", 7));
}};https://stackoverflow.com/questions/44475615
复制相似问题