我正在学习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()));
}
}
任何指针都会受到赞赏
答案 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());
个对象。最后,这些对象被收集到一个集合中。