Чтобы toMap
обрабатывал дубликаты ключей, необходимо передать функцию слияния, которая принимает два значения и возвращает одно значение.
В вашем случае функция слияния должна объединить два значения:
List<Object> listObject = {something1,something2,something3}
Map<String,String> listToMap =
listObject.stream()
.collect(Collectors.toMap(listObject::getKey,
listObject::getValue,
(v1,v2)->v1+","+v2));
Если вы хотите сохранить значения одного и того же ключа в List
, а не объединять их в один String
, используйте groupingBy
:
List<Object> listObject = {something1,something2,something3}
Map<String,List<String>> listToMap =
listObject.stream()
.collect(Collectors.groupingBy(listObject::getKey,
Collectors.mapping(listObject::getValue,
Collectors.toList())));