内部平面图 类

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());