Disons qu'il y a un Person
qui ressemble à ceci :
public class Person {
private int id;
private String discriminator;
// some other fields plus getters/setters
}
J'ai maintenant un Stream
de Person
et ce flux peut contenir plusieurs éléments Person
qui ont les mêmes id
mais différents discriminator
c'est-à-dire [Person{“id”: 1, “discriminator”: “A”}, Person{“id”: 1, “discriminator”: “B”}, Person{“id”: 2, “discriminator”: “A”}, ...]
Ce que je voudrais faire, c'est filtrer tous les Person
avec un certain identifiant s'il y a au moins une instance de Person
avec cet identifiant et qui possède une valeur particulière de discriminant. Ainsi, en continuant avec l'exemple ci-dessus, le filtrage par la valeur du discriminateur "A" donnerait une collection vide (après l'opération de réduction, bien sûr) et le filtrage par la valeur du discriminateur "B" donnerait une collection ne contenant aucun Person
dont l'identifiant est égal à 1.
Je sais que je peux réduire le flux en utilisant groupingBy
les collecteurs et les éléments de groupe par Person.id
puis supprimez le mappage de l'image résultante Map
si la liste mappée contient un Person
avec la valeur de discriminant spécifiée, mais je me demande s'il n'y a pas un moyen plus simple d'obtenir le même résultat ?