java:Map <String、Set <String >>内のすべての個別のキーと値のカウントを取得します[重複]
 Jan 26 2021
入力:Map <String、Set> map
例:map =
    {"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。