【发布时间】:2017-05-09 00:16:01
【问题描述】:
我有两个简单的 POJO:
public class Parent {
String name;
List<Child> children = new ArrayList<>();
void addChild(Integer age) { children.add(new Child(age)); }
}
public class Child {
Integer age;
}
然后我生成一些数据,我为父级 100 个子级添加:
List<Parent> parentList = new ArrayList<>();
Parent first = new Parent("first");
for (int i = 0; i < 100; ++i) { first.addChild(i); }
parentList.add(first);
我的目标是移除所有 10 岁以下的孩子:
parentList.stream().forEach(parent -> {
parent.setChildren(getChildrenOlderThan(parent));
});
List<Child> getChildrenOlderThan10(Parent parent) {
return parent.getChildren().stream()
.filter(child -> child.getAge() > 10)
.collect(Collectors.toList());
}
最后我列出了十岁以上的孩子。但是我不想写一个单独的方法getChildrenOlderThan。
如何仅使用单个流来获取列表孩子超过 10 岁的所有父母?
【问题讨论】:
标签: java java-8 java-stream