Java: Anzahl aller unterschiedlichen Schlüssel und Werte in Map <String, Set <String >> [duplizieren] abrufen
Eingabe: Map <String, Set> Map
zB: map =
{"a"=[],
"b"=["b", "1", "2", "4"]}
erwartete Ausgabe: 5 ("b" erscheint als Schlüssel und Wert. sollte als eins gezählt werden)
das habe ich bisher versucht. Gibt es einen besseren Weg, dies zu tun?
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());
Ist es möglich, auf dem Entryset der Karte zu streamen, um zu dieser Ausgabe zu gelangen? Auch das Erstellen eines separaten Hash-Sets ist nicht erforderlich, um eine Zählung zu erhalten
Antworten
1 Eran
Sie können so etwas tun:
Set<String> o = m1.entrySet()
.stream()
.flatMap(e -> Stream.concat(Stream.of(e.getKey()),e.getValue().stream()))
.collect(Collectors.toSet());
dh erstellen Sie einen Stream<String>
von jedem Eintrag der Map
.