java: obter a contagem de todas as chaves e valores distintos em Map <String, Set <String>> [duplicado]
entrada: Map <String, Set> map
por exemplo: map =
{"a"=[],
"b"=["b", "1", "2", "4"]}
resultado esperado: 5 ("b" aparece como chave e valor. deve ser contado como um)
isso é o que eu tentei até agora. Existe uma maneira melhor de fazer isso?
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());
É possível transmitir no entryset do mapa para chegar a esta saída? Além disso, a criação de um hashset separado parece desnecessário apenas para obter uma contagem
Respostas
1 Eran
Você pode fazer algo assim:
Set<String> o = m1.entrySet()
.stream()
.flatMap(e -> Stream.concat(Stream.of(e.getKey()),e.getValue().stream()))
.collect(Collectors.toSet());
ou seja, crie um Stream<String>
de cada entrada do Map
.
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?