我有以下数据结构:
class A {
String domain;
List<B> refiners;
}
class B {
String name;
String signature;
}
class C {
String domain;
String name;
String signature;
public C(A a, B b) {
this.domain = a.domain;
this.name = b.name;
this.signature = b.signature;
}
}
拥有一个List<A>
,我该如何使用Java Streams API创建一个List<C>
。现在将每个成员都视为公开成员。
答案 0 :(得分:0)
在这里进行假设,但是您可以使用flatMap
和map
为每个C
中的每个B
创建一个A
List<A> listA = ...;
List<C> listC = listA.stream()
.flatMap(a -> a.refiners.stream()
.map(b -> {
C c = new C();
c.domain = a.domain;
c.name = b.name;
c.signature = b.signature;
return c;
}))
.collect(Collectors.toList());
答案 1 :(得分:0)
List<C> cs = as.stream().flatMap((a -> {
return a.refiners.stream().map(b -> {
return new C(a, b);
});
})).collect(Collectors.toList());
其中as
是A
实例的列表。