java - 如何使用 Stream.flatmap 将被展平的对象与展平的对象组合起来

标签 java java-8 java-stream

我有以下类别的流:

class A {
    Stream<B> bs;
}

我想将其转换为以下类的流:

class AB {
    A a;
    B b;
    AB(A a, B b) {
        this.a = a;
        this.b = b;
    }
}

我可以看到 flatMap 会给我一个 B 流:

astream.flatMap(a -> a.bs);

但我不知道如何将对象传递到 map ,例如:

astream.flatMap(a -> a.bs).map(b -> new AB(a, b));

如果我尝试这样做,我会收到错误:

error: cannot find symbol

这在我的预料之中。

最佳答案

您必须使用 map 将 bs StreamB 映射到 AB :

List<AB> abs = astream.flatMap(a -> a.bs.map(b->new AB(a,b)))
                      .collect(Collectors.toList());

关于java - 如何使用 Stream.flatmap 将被展平的对象与展平的对象组合起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33198639/

相关文章:

java - 将 R 集成到 Java Web 应用程序中

java - 如何将文本移动到 JButton 的底部

Java Streams - 从其他两个列表中获取 "symmetric difference list"

java - 迭代列表查找 boolean 属性,返回默认 false

java - 长轮询 杀死服务器端的线程

java - AWS S3上传图像在部署到EBS时不起作用,但在本地主机SpringBoot(JAVA)中起作用

java - 将一个集合划分为 2 个不同集合的最佳方法是什么?

java - 多个 lambda 方法引用

java - 我们如何处理 java 流中的异常

java - 将映射转换为 java 8 流中更扁平的结构