Bonjour,

j'ai dans un code que j'essaie de simplifier avec java, pas mal de méthode qui ressemblent à ça:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
List<Y> resultat = new ArrayList<Y>();
for (X x : collectionDeX){
  for (Y y: x.getCollectionY())
     if (y.uneCondition())
       resultat.add(y);
}
return resultat;

instinctivement, avec stream, j'essaierais comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
return collectionDeX.stream()
    .flatten(x -> x.getCollectionY())
    .filter(Y::uneCondition)
    .collect(Collectors.toList());
Évidement, cette méthode flatten n'existe pas. Existe-t-il quelque chose dans Stream pour gérer deux boucles imbriquée en un flux unique?