我有class
。我想得到包含所有这些参数的对象列表。现在我和foreach一起做。有没有办法用flatMap
做到?
public class A{
String parA;
List<B> parB;
public static class B{
String parC;
String parD;
List<C> parE;
}
public static class C{
String parF;
String parG;
String parH;
String parJ;
}
}
我想拥有对象列表:
public class Out{
String parA;
String parC;
String parD;
String parF;
String parG;
String parH;
String parJ;
}
答案 0 :(得分:2)
假设你有一个给定的A a = ...
,那么更简洁干净的方法就是两个嵌套循环,如:
List<Out> list = new ArrayList<>();
for (B b : a.parB) {
for (C c : b.parE) {
list.add(new Out(a.parA, b.parC, b.parD, c.parF, c.parG, c.parH, c.parJ));
}
}
由于您在这里要求提供Stream
解决方案,请转到:
List<Out> list = Stream.of(a).flatMap(aa ->
aa.parB.stream().flatMap(bb ->
bb.parE.stream().map(cc ->
new Out(aa.parA, bb.parC, bb.parD, cc.parF, cc.parG, cc.parH, cc.parJ))
)
).collect(Collectors.toList());