J'ai deux POJOs simples :
public class Parent {
String name;
List<Child> children = new ArrayList<>();
void addChild(Integer age) { children.add(new Child(age)); }
}
public class Child {
Integer age;
}
Puis je génère des données, j'ajoute pour les parents 100 enfants :
List<Parent> parentList = new ArrayList<>();
Parent first = new Parent("first");
for (int i = 0; i < 100; ++i) { first.addChild(i); }
parentList.add(first);
Mon but est de retirer tous les enfants de moins de dix ans :
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());
}
Enfin, j'ai une liste d'enfants de plus de dix ans. Mais je ne veux pas écrire une méthode séparée getChildrenOlderThan.
Comment obtenir tous les parents avec des enfants de plus de dix ans en utilisant uniquement le flux unique ?