Возник вопрос как можно удалить дубликаты value из HashMap за раз?
поиски в google "Remove duplicate values from HashMap in Java" выдает решения с введение дополнительного Set или вообще полную дичь :)
но вот вопрос
map.values().stream().distinct()
выдает нам поток без дубликатов но как потом собрать в
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)) никак не получается
Я уже и фильтрами ( .filter(Map.Entry::getValue.distinct())) и как только не пробовал :(
Не выходит
Может быть у кого-то есть готовое решение
Мой вариант:
Set<String> uniques = new HashSet<>();
map.values().removeIf(map.values().stream().filter(e -> !uniques.add(e)).collect(Collectors.toSet())::contains);