【发布时间】:2018-06-26 10:42:57
【问题描述】:
Optional.flatMap() 和 Stream.flatMap() 有什么区别。
Stream 上的正确 flatMap:
List<ObjectDTO> collect = types.stream()
.flatMap(a -> client.getSthById(new URI(a)).stream())
.collect(Collectors.toList());
在 Optional 上使用 flatMap 时出现异常:
List<ObjectDTO> collect2 = client.getSthByObj(obje.get(), null).getBrowse()
.flatMap(uri -> client.getSthById(uri).stream())
.collect(Collectors.toList());
为什么我不能以同样的方式使用它?
【问题讨论】:
-
你在问什么?这真的不清楚,您是否阅读过文档和这里的许多其他帖子?
-
它们执行非常相似的操作,因此名称相同。主要区别在于一个需要
Optional和一个返回Optional的方法,而另一个需要一个Stream和一个返回Stream的方法。 -
您能否将您的示例详细说明为MCVE?这会有所帮助。
-
你说你得到的异常的堆栈跟踪也会有帮助。
-
您最好澄清您的问题以准确说明您要做什么,并提供自给自足的代码 sn-ps 来显示您的问题 (minimal reproducible example)。即使您已经得到了答案,这也会对未来的读者有所帮助。
标签: java methods java-8 java-stream optional