java : Map <String, Set <String >> [duplicate]에서 모든 고유 키 및 값의 개수를 가져옵니다.

Jan 26 2021

입력 : Map <String, Set> 맵

예 :지도 =

    {"a"=[], 
    "b"=["b", "1", "2", "4"]}

예상 출력 : 5 ( "b"는 키와 값으로 나타납니다. 1로 계산되어야 함)

이것은 내가 지금까지 시도한 것입니다. 이 작업을 수행하는 더 좋은 방법이 있습니까?

    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());

이 출력에 도달하기 위해 맵의 엔트리 세트에서 스트리밍 할 수 있습니까? 또한 별도의 해시 세트를 만드는 것은 단지 개수를 얻기 위해 불필요 해 보입니다.

답변

1 Eran Jan 26 2021 at 15:20

다음과 같이 할 수 있습니다.

Set<String> o = m1.entrySet()
                  .stream()
                  .flatMap(e -> Stream.concat(Stream.of(e.getKey()),e.getValue().stream()))
                  .collect(Collectors.toSet());

Stream<String>, 각 항목의 Map.