内部平面图 类
flatmap for inner classes
我有一个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;
}
假设您有一个给定的 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());
我有一个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;
}
假设您有一个给定的 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());