Flatmapping可选集合

时间:2017-05-27 23:13:12

标签: java lambda

所以我有变量Optional<Collection<Student>>,我想使用.findFirst() lambda方法来查找Student地址。

我现在正在做的就是这个

Optional<Collection<Student>> students = ...;
return students.map(s -> s.stream()
                            .filter(...)
                            .findFirst())
                    .orElse(Optional.empty());

有没有更好的方法来做到这一点,所以我不会在地图中流?

1 个答案:

答案 0 :(得分:4)

您好像在寻找flatMap

students.flatMap(s -> s.stream()
                       .filter(...)
                       .findFirst());

这会将Optional<Collection<Student>>映射到Optional<Student>而不是Optional<Optional<Student>>