java: hitung semua kunci dan nilai yang berbeda di Map <String, Set <String>> [duplikat]

Jan 26 2021

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 Jan 26 2021 at 15:20

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.