java: hitung semua kunci dan nilai yang berbeda di Map <String, Set <String>> [duplikat]
masukan: Peta <String, Set> peta
misalnya: map =
{"a"=[],
"b"=["b", "1", "2", "4"]}
keluaran yang diharapkan: 5 ("b" muncul sebagai kunci dan nilai. harus dihitung sebagai satu)
inilah yang sudah saya coba selama ini. apakah ada cara yang lebih baik untuk melakukan ini?
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());
Apakah mungkin untuk melakukan streaming pada entryset peta untuk sampai pada keluaran ini? Juga membuat hashset terpisah terlihat tidak perlu hanya untuk menghitung
Jawaban
1 Eran
Anda bisa melakukan sesuatu seperti ini:
Set<String> o = m1.entrySet()
.stream()
.flatMap(e -> Stream.concat(Stream.of(e.getKey()),e.getValue().stream()))
.collect(Collectors.toSet());
yaitu membuat Stream<String>
dari setiap entri file Map
.