@Getter static class Student {
private Map<Status, Marks> statusAndMarks;
}
Map<Status, Student> map = new HashMap<>();
for (Student student : studentList) {
for (Status status : student.getStatusAndMarks().keySet()) {
map.put(status, student);
}
}
如何在Java 8中以功能样式编写以上编写的代码?我已经编写了以下代码,但是如何编写代码的结果是不可变的映射,而我不需要在lambda之前创建映射?
studentList
.forEach(student -> {
student
.getStatusAndMarks()
.keySet().stream()
.map(key -> map.put(key, statusKeyImportantMessage));
});
您可以尝试这样的事情:
studentList.stream()
.flatMap(student -> student.getStatusAndMarks()
.keySet().stream().map(status -> Map.entry(status, student)))
.collect(toMap(Map.Entry::getKey, Map.Entry::getValue));