java: obtenir le nombre de toutes les clés et valeurs distinctes dans Map <String, Set <String>> [duplicate]
entrée: Map <String, Set> map
par exemple: map =
{"a"=[],
"b"=["b", "1", "2", "4"]}
résultat attendu: 5 ("b" apparaît comme clé et valeur. doit être compté comme un)
c'est ce que j'ai essayé jusqu'à présent. Y a-t-il une meilleure manière de faire cela?
Set<String> o = new HashSet<String>();
o.addAll(m1.keySet());
o.addAll(m1.values().stream().flatMap(Collection::stream).collect(Collectors.toSet()));
System.out.println(o.size());
Est-il possible de diffuser sur le jeu d'entrées de la carte pour arriver à cette sortie? Créer également un hashset séparé semble inutile juste pour obtenir un décompte
Réponses
1 Eran
Vous pouvez faire quelque chose comme ceci:
Set<String> o = m1.entrySet()
.stream()
.flatMap(e -> Stream.concat(Stream.of(e.getKey()),e.getValue().stream()))
.collect(Collectors.toSet());
c'est-à-dire créer un Stream<String>
de chaque entrée du Map
.