小编ini*_*ali的帖子

在这种特定情况下如何使用Streams获取列表列表?

我有一些类如下:

Class A {
    private String name;
    private List<B> b;
    // getters and setters
}
Class B {
    private String name;
    private List<C> c;
    // getters and setters
}
Class C {
    private String name;
    private List<D> d;
    // getters and setters
}
Class D {
    // properties
    // getters and setters
}
Run Code Online (Sandbox Code Playgroud)

现在我有一个类型列表A.我想要做的是获得一个包含其他类型列表的列表,D如下所示:

List<List<D>>
Run Code Online (Sandbox Code Playgroud)

我尝试过这样的事情flatMap:

listA.stream()
     .flatMap(s -> s.getB.stream())
     .flatMap(s -> s.getC.stream())
     .flatMap(s -> s.getD.stream())
     .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

但是这会将类型的所有元素收集D到一个列表中:

List<D>
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

java grouping list java-8 java-stream

5
推荐指数
1
解决办法
157
查看次数

标签 统计

grouping ×1

java ×1

java-8 ×1

java-stream ×1

list ×1