java: Map <String, Set <String>> [duplicate] içindeki tüm farklı anahtarların ve değerlerin sayısını al
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
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
.
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
Donovan, Şarkılarından 1'ini The Beatles'ın "Lucy in the Sky with Diamonds" şarkısıyla karşılaştırdı