我从一个不受我控制的服务中得到一张可能为null的服务,并希望对其进行处理,比如说,过滤,映射和缩减为我需要的单个元素.
问题:从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();
Run Code Online (Sandbox Code Playgroud)
但后来我没有... Stream<Entry>但Stream<Set<Entry>>有没有办法以某种方式flatMap一个集合或地图的可选?
注意:我对这里流畅,纯粹的流/可选方法感兴趣.当然,当我首先将地图保存到local var并确保它不为null时,它会起作用.
你的错误在于这一行:
.map(Stream::of)
Run Code Online (Sandbox Code Playgroud)
该of函数采用单个参数(或vararg参数),并返回仅包含该元素的流.你会得到一个Stream<Set<Map.Entry>>.相反,您应该在entryset上调用stream方法,如下所示:
.map(Set::stream)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
301 次 |
| 最近记录: |