Java: Anzahl aller unterschiedlichen Schlüssel und Werte in Map <String, Set <String >> [duplizieren] abrufen
 Jan 26 2021
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 Jan 26 2021 at 15:20
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.