java 8 ruisseaux imbriqués
Supposons que vous avez de la structure des classes comme ceci:
public class Review{
private Integer idReview;
private String description;
private ArrayList<RelReviewImage> images;
}
public class RelReviewImage{
private Integer idRelReviewImage;
private Integer idImage;
private String name;
}
Avec Java 8 et Stream
s, nous voulons faire un filtre pour idImage
et retour Review
objets.
Est-il possible? Un niveau est facile, mais 2 niveaux nous ne pouvons pas trouver un exemple ou de la documentation.
source d'informationauteur TrailRunningReview | 2014-12-01
Vous devez vous connecter pour publier un commentaire.
Deviner ce qu'il vous faut: (à Supposer que les accesseurs sont disponibles pour
Review
etRelReviewImage
)Je pense que vous pouvez obtenir le plus maintenable et élégant de code ici, en ne cherchant pas pour un one-liner. 🙂
Quand j'ai ces structures imbriquées, j'ai l'habitude de de créer une nouvelle méthode pour chaque niveau. De sorte que quand je code, je n'ai qu'à avoir un niveau dans ma tête à un moment.
Essayer de tirer la partie qui vérifie s'il existe une image avec
imageId
dans unPredicate
.Un
Predicate
ici est unFunction
que prend votreReview
et renvoie unBoolean
qui peuvent être filtrés.Protip
Si le
filterReviews
-méthode avait pris laPredicate
comme un paramètre, vous pouvez utiliser la même méthode, pour le filtre sur tous les différents domaines à l'intérieur deReview
en passant différentsPredicates
.Voici quelques Idée de base: