Лучший способ - перебирать каждую запись на внешней и внутренней карте, а затем преобразовывать значение записи внутренней карты List<ObjectA>
в Set<ObjectA>
Map<String, Map<String, Set<ObjectA>>> resultMap = map.entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue().entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getKey, val -> new HashSet<>(val.getValue())))));
Примечание: Если вы конвертируете List
в HashSet
, вы не будете поддерживать тот же порядок, поэтому вы можете выбрать LinkedHashSet
вместо HashSet
для поддержания порядка
Map<String, Map<String, Set<ObjectA>>> resultMap = map.entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue().entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getKey, val -> new LinkedHashSet<>(val.getValue())))));