Java 如何使用Stream.flatmap将要展平的对象与展平的对象组合

Java 如何使用Stream.flatmap将要展平的对象与展平的对象组合,java,java-8,java-stream,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); 但我不知道如何将对象传递到地图,如: astream.flatMap(a -> a.bs).map

我有一个以下类的流:

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);
但我不知道如何将对象传递到地图,如:

astream.flatMap(a -> a.bs).map(b -> new AB(a, b));
如果我尝试此操作,则会出现错误:

error: cannot find symbol

这是我所期望的。

您必须使用
map
bs
流的
B
s映射到
AB
s:

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

发布一个完整的最小示例。实际上,将
保存在字段中对我来说似乎是一个值得怀疑的想法。