2
votes

Ayant une carte de Set dans Java 8, comment puis-je mettre toutes les valeurs dans un seul ensemble?

J'ai une Map > . Je veux toutes les valeurs de cette carte dans un nouveau Set en utilisant l'API streams. J'ai pu obtenir un Set> , mais ce que je veux, ce sont toutes les valeurs de tous les ensembles de ma carte, dans un seul ensemble. Est-ce possible en utilisant des flux?

Merci d'avance.


1 commentaires

Jetez un œil à flatMap () .


3 Réponses :


5
votes

Voilà:

Set<String> allStrings = map.values()
   .stream()
   .flatMap(Set::stream)
   .collect(Collectors.toSet());


0 commentaires

1
votes

Une autre solution peut être aussi:

Set<String> set = new HashSet<>();
map.values().forEach(set::addAll);


0 commentaires

0
votes

Vous pouvez utiliser le Méthode Stream.collect () pour y parvenir:

Set<String> set = map.values().stream()
        .collect(HashSet::new, HashSet::addAll, HashSet::addAll);


0 commentaires