java: Map <String, Set <String>> [duplicate] içindeki tüm farklı anahtarların ve değerlerin sayısını al

Jan 26 2021

input: Map <String, Set> harita

örneğin: map =

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

beklenen çıktı: 5 ("b" anahtar ve değer olarak görünür. bir olarak sayılmalıdır)

bu şimdiye kadar denediğim şey. bunu yapmanın daha iyi bir yolu var mı?

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

Bu çıktıya ulaşmak için haritanın giriş setinde akış yapmak mümkün mü? Ayrıca ayrı bir hashset oluşturmak sadece bir sayı almak için gereksiz görünüyor

Yanıtlar

1 Eran Jan 26 2021 at 15:20

Bunun gibi bir şey yapabilirsiniz:

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

yani bir oluşturmak Stream<String>her girdinin Map.