用Java Stream替换Inner for循环

时间:2017-08-10 22:54:12

标签: java-8

我正在学习Java Streams,并希望用java 8功能替换下面的代码。

我能够使用stream.filter()和stream.map功能,但我无法用java 8功能替换下面的代码。

List<Subject> subjects= null;
Set<SubjectData> subjectData= new SubjectData();
for (String name: studentNames)
{
    //subjects = student.getSubjects(name);
    // consider instead of above line , which returns a collection of <Subject>
    for (Subject subject : subjects)
    {
        subjectData.add(new SubjectData(subject.syllabus(), subject.code()));
    }
}

任何指针都会受到赞赏

1 个答案:

答案 0 :(得分:2)

我想这样的事情就是你想要的:

<td>
    <textarea oninput='textHeight(this)' onfocus='onFocus(this)' onfocusout='onFocusOut(this, window.event)'></textarea>
    <button onclick='deleteNote(this)'>X</button>
</td>

这会对学生姓名进行流式处理,在连接这些流时将其映射到主题,然后为每个流创建Set<SubjectData> subjectData = studentNames.stream() .flatMap(name -> student.getSubjects(name).stream()) .map(subject -> new SubjectData(subject.syllabus(), subject.code())) .collect(Collectors.toSet()); 个对象。最后,这些对象被收集到一个集合中。