java – 如何使用分组映射流?
发布时间:2020-12-15 04:41:39 所属栏目:Java 来源:网络整理
导读:我有很长的孩子. // ordered by parent.id / child.idStreamChild childStream; 说, 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)) 每个孩子都有父母. c
我有很长的孩子.
// ordered by parent.id / child.id Stream<Child> childStream; 说, 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)) 每个孩子都有父母. class Child { Parent parent; } 现在,我如何将流映射到Family流中? class Family { Parent parent; List<Child> children; } 我已经知道了Collectors.groupingBy,但是流很长,将它们全部收集到Map中是不适用的. 解决方法
如果流按父(id)排序,则这是
StreamEx的解决方案.
StreamEx.of(childStream) .collapse((a,b) -> a.getParent().getId() == b.getParent().getId(),Collectors.toList()) .map(cl-> new Family(cl.get(0).getParent(),cl))...; 崩溃是比较groupy的懒惰评价.例如,如果您只想获得前5个家庭,则只会加载前5个家庭中的孩子,而不是全部. StreamEx.of(childStream) .collapse((a,cl)) .limit(5); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |