, если вы хотите продолжить с groupingBy
, вы должны сделать:
Map<String, List<String>> result = conditions.stream()
.collect(groupingBy(Condition::getKey, mapping(Condition::getValues, toList())))
.entrySet().stream()
.collect(toMap(f -> f.getKey(), f -> f.getValue().stream()
.flatMap(List::stream).distinct().collect(toList())));
, но это может быть более компактно с toMap
с функцией слияния:
Map<String, Set<String>> result = conditions.stream()
.collect(toMap(Condition::getKey, f -> new HashSet<>(f.getValues()),
(l, r) -> {l.addAll(r);return l;}));