首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java streams,从2个列表中获取数据

Java streams,从2个列表中获取数据
EN

Stack Overflow用户
提问于 2017-06-11 00:32:20
回答 0查看 342关注 0票数 0

我有以下两个列表,我正在尝试打印(通过Java Stream)每个课程的平均值和名称。我的代码输出现在只给出了第一个课程的名称和总和,但我没有得到其他课程的名称和总和

我如何修复我的代码?这是我的代码:

代码语言:javascript
复制
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() ));`

列表如下:

代码语言:javascript
复制
     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));
    }};
EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44475615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档