Java “什么是”呢;“映射流”;在flatMap的文档中提到过吗?
一般来说,这个问题与flatMap()无关。我想了解flatMap的文档 文件说: 返回由替换每个元素的结果组成的流 使用由生成的映射流的内容创建此流的 将提供的映射函数应用于每个元素 假设我们有以下代码:Java “什么是”呢;“映射流”;在flatMap的文档中提到过吗?,java,java-8,java-stream,flatmap,Java,Java 8,Java Stream,Flatmap,一般来说,这个问题与flatMap()无关。我想了解flatMap的文档 文件说: 返回由替换每个元素的结果组成的流 使用由生成的映射流的内容创建此流的 将提供的映射函数应用于每个元素 假设我们有以下代码: List 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
List 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,2,3]
和[4,5,6]
。映射函数是List::stream
,将此函数应用于两个列表将为我们提供两个类型为-stream
的流对象。现在我无法理解我们是如何得到最终输出的Stream
,而不是Stream
。(我知道如果我们使用stream.map()
而不是stream.flatMap()
,我们会得到后者)
然而,如果我们遵循文档,我们不应该得到流
有人能在本例的上下文中解释术语映射流的含义吗?映射流的类型/值是什么?“映射流的内容”是什么
请帮助我理解此文档。映射流的内容是
mapper
返回的流中的元素。正如您所建议的,常规的映射(List::stream)
将返回一个流。flatMap
(如名称中所示)的要点是通过丢弃内部流包装器并将所有包含的元素合并到一个流中来“展平”结果。老实说:这些词具体指的是什么有什么关系?结果很清楚:将映射函数应用于元素,然后将所有生成的子流合并成一个大流。@luk2302我阅读了一些教程和博客,了解了flatMap的工作原理。然而,我想验证我从这些教程中了解到了什么。就我能想到的几个例子而言,它是正确的。另外,我想知道我对文档理解的差距,因为我希望能够从文档中理解这些操作。我不知道这样做有什么显著的好处,但对于一些琐碎的事情,咨询文档而不是阅读教程会有所帮助。