Jin*_*won 3 java mapping java-stream
我有很长的孩子.
// ordered by parent.id / child.id
Stream<Child> childStream;
Run Code Online (Sandbox Code Playgroud)
说,
Child(id = 1, parent(id = 1))
Child(id = 2, parent(id = 1))
Child(id = 3, parent(id = 2))
Child(id = 4, parent(id = 2))
Child(id = 5, parent(id = 3))
Run Code Online (Sandbox Code Playgroud)
每个人Child都有父母.
class Child {
Parent parent;
}
Run Code Online (Sandbox Code Playgroud)
现在,我如何将流映射到一个流Family?
class Family {
Parent parent;
List<Child> children;
}
Run Code Online (Sandbox Code Playgroud)
我已经知道了Collectors.groupingBy,但是流很长,将它们全部收集到一个中Map是不适用的.
要将Child实例分组到Family实例中,必须处理Stream,因此需要终端操作.您可以使用groupingBy然后将结果Map转换为Stream您需要的:
Stream<Family> families =
childStream.collect(Collectors.groupingBy(Child::getParent))
.entrySet()
.stream()
.map(entry -> new Family(entry.getKey(),entry.getValue()));
Run Code Online (Sandbox Code Playgroud)
这假设你的Family类有一个Family(Parent parent, List<Child> children)构造函数.
| 归档时间: |
|
| 查看次数: |
75 次 |
| 最近记录: |