java: pobierz liczbę wszystkich odrębnych kluczy i wartości w Map <String, Set <String>> [duplicate]
wejście: Map <String, Set> map
np .: map =
{"a"=[],
"b"=["b", "1", "2", "4"]}
oczekiwany wynik: 5 („b” pojawia się jako klucz i wartość. należy liczyć jako jeden)
to jest to, czego próbowałem do tej pory. czy jest lepszy sposób na zrobienie tego?
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());
Czy można przesyłać strumieniowo dane wejściowe mapy, aby dotrzeć do tego wyjścia? Również tworzenie oddzielnego skrótu wydaje się niepotrzebne tylko po to, aby uzyskać liczbę
Odpowiedzi
1 Eran
Możesz zrobić coś takiego:
Set<String> o = m1.entrySet()
.stream()
.flatMap(e -> Stream.concat(Stream.of(e.getKey()),e.getValue().stream()))
.collect(Collectors.toSet());
tj. utwórz Stream<String>
każdy wpis pliku Map
.