我从不受我控制的服务获取可能为空的地图,并且想要处理它,比方说,过滤、映射并减少到我需要的单个元素。
问题:是否有从Optional到Stream的“链接”?
我尝试过(除其他外):
return Optional.ofNullable(getMap())
.map(Map::entrySet) // gets the entryset
.map(Stream::of)
.orElseGet(Stream::empty)
// i would then like to continue with
.filter(e -> e.getKey().startsWith("f")
.map(Entry::getValue)
.findFirst();
但后来我不明白Stream<Entry>
but Stream<Set<Entry>>
...有没有办法以某种方式平面映射集合或从可选映射出来?
注意:我对这里流畅的、纯流/可选的方法感兴趣。当我首先将地图保存到本地变量并确保它不为空时,它当然有效。
你的错误在于这一行:
.map(Stream::of)
The of
函数采用单个参数(或 vararg 参数),并返回仅包含该元素的流。因此,您将获得Stream<Set<Map.Entry>>
。相反,您应该在条目集上调用流方法,如下所示:
.map(Set::stream)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)