当前位置: 首页 > 知识库问答 >
问题:

谁能解释一下,我正在尝试通过flatmap实现交叉连接?

百里海超
2023-03-14
List<Integer> s1 = Stream.of(1, 2);
Supplier<Stream<String>> s2 = ()->Stream.of("A", "B");

s1.flatMap(v1 -> s2.get()
                   .map(v2 ->tuple(v1,v2))).forEach(System.out::println);

平面图的论点需要澄清。

共有1个答案

姜振濂
2023-03-14

首先,Stream的第一行有一个输入错误。of被分配到列表

关于flatMap参数的解释:

>

因此,这些多个Stream

List<Integer> s1 = Stream.of(1, 2);
Supplier<Stream<String>> s2 = () -> Stream.of("A", "B");

s1  // Stream<Integer>
.flatMap(v1 -> s2.get() // Stream<String> returned by the Supplier
                 .map(v2 -> tuple(v1,v2)) // Stream<tuple>
) // Stream<tuple>
.forEach(System.out::println);

为了说明问题,让我们假设使用一个简单的map来代替平映射(也使用List来代替tuple):

s1  // Stream<Integer>
    .map(v1 -> s2.get() // Stream<String> returned by the Supplier
        .map(v2 -> Arrays.asList(v1, v2)) // Stream<List>
    ) // Stream<Stream<List>>
    .peek(System.out::println)
    .flatMap(s -> s) Stream<List>
    .forEach(System.out::println);

输出:

java.util.stream.ReferencePipeline$3@3dd4520b // printed by peek
[1, A]
[1, B]
java.util.stream.ReferencePipeline$3@5ae63ade // printed by peek
[2, A]
[2, B]

 类似资料:
  • 问题内容: 我无法理解网页的的文档中。 谁能简单地向我解释一下? 问题答案: 背后的想法是它将转换您的数据,使其分布的平均值为0,标准差为1。 对于多变量数据,这是按功能进行的(换句话说,独立于数据的每一列) 。 给定数据的分布,数据集中的每个值都将减去平均值,然后除以整个数据集(或多变量情况下的特征)的标准差。

  • 我对javascript还是个新手,只知道基本知识。有人能解释一下下面的代码,就像在调用init函数时发生的流中一样吗? 我对下面代码的理解是,一旦调用init函数,就会设置一个全局变量输出,该输出映射到一个带有id输出的HTML元素。然后调用。这将创建一个WebSocket对象。这之后是我不完全理解的部分。 在行中,WebSocket对象有一个名为open的属性,我们将它设置为任何返回的属性 。

  • 我正在使用连接到web服务。我知道如何使用,但我想了解它是如何工作的。基本上,我想知道以下几点: 在哪一点尝试建立到给定URL的连接

  • 这是我从骡子3到骡子4转换的第一个项目。我与mule4一起工作,但在Mule3是新的。有谁能帮帮我吗?你能告诉我这些自定义处理器和变压器在这个mule3代码中的用途吗?而Mule4中的等价代码会是什么呢?在骡子4中没有像这样的自定义变压器。请帮帮我..

  • 我在计算这条线的时间复杂度时遇到了麻烦。在我看来是二次O(n**2)。因为如果不使用列表理解,这里必须经过嵌套循环。

  • 我是android开发的新手,在测试通过http连接发送短信并获得返回字符串时,我遇到了这个错误消息。下面是http API: