如何解决flatMap 的文档中提到的“映射流”是什么?
这个问题一般与 flatMap() 无关。我想了解 flatMap 的文档。
文档说:
返回由替换每个元素的结果组成的流 此流的内容与由生成的映射流的内容 将提供的映射函数应用于每个元素。
假设我们有以下代码:
List<List<Integer>> list = Arrays.asList(Arrays.asList(1,2,3),Arrays.asList(4,5,6));
list.stream()
.flatMap(lst -> lst.stream())
.forEach(val -> System.out.println(val));
根据文档,“此流的每个元素”表示列表 [1,3]
和 [4,6]
。映射函数是 List::stream
并且在两个列表上应用这个函数将给我们两个类型为 Stream<String>
的流对象。现在我无法理解我们如何获得最终输出为 Stream<String>
而不是 Stream<Stream<String>>
。 (我知道如果我们使用 stream.map()
而不是 stream.flatMap()
,我们会得到后者)
但是,如果我们遵循文档,我们不应该得到 Stream<Stream<String>>
吗?
谁能解释一下这个例子中映射流这个词的含义? 映射流的类型/值是什么? “这个映射流的内容”是什么?
请帮助我理解这个文档。
解决方法
映射流的内容是mapper
返回的流中的元素。正如您所建议的,常规 map(List::stream)
将返回一个流流。 flatMap
的要点(如名称所示)是通过丢弃内部流包装器并将所有包含的元素合并为一个流来“扁平化”结果。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。