java: получить количество всех отдельных ключей и значений в Map <String, Set <String>> [дубликат]
ввод: Map <String, Set> карта
например: map =
{"a"=[],
"b"=["b", "1", "2", "4"]}
ожидаемый результат: 5 («b» отображается как ключ и значение. следует считать за единицу)
это то, что я пробовал до сих пор. Есть лучший способ это сделать?
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());
Можно ли выполнить потоковую передачу по набору записей карты, чтобы получить этот результат? Также создание отдельного хеш-набора выглядит ненужным только для подсчета
Ответы
1 Eran
Вы можете сделать что-то вроде этого:
Set<String> o = m1.entrySet()
.stream()
.flatMap(e -> Stream.concat(Stream.of(e.getKey()),e.getValue().stream()))
.collect(Collectors.toSet());
то есть создать Stream<String>
для каждой записи файла Map
.