Краткий ответ: Вам не хватает функции слияния:
.collect(toMap(Map.Entry::getKey,Map.Entry::getValue, (l, r) -> l, LinkedHashMap::new));
т.е. (l, r) -> l
выше.
Длинный ответ:
Вы хотите использовать перегрузку toMap
, которая использует "mapFactory" в качестве документа, вызывающего документ, по сути это поставщик, предоставляющий новую пустую карту, в которую будут вставлены результаты.
Теперь посмотрим, как определяется перегрузка:
toMap(Function<? super T,? extends K> keyMapper,
Function<? super T,? extends U> valueMapper,
BinaryOperator<U> mergeFunction,
Supplier<M> mapFactory)
Как вы можете видеть, mergeFunction
необходим для предоставления "mapFactory", иначе компилятор подумает, что вы пытаетесь использовать эту перегрузку:
toMap(Function<? super T,? extends K> keyMapper,
Function<? super T,? extends U> valueMapper,
BinaryOperator<U> mergeFunction)
следовательно, это терпит неудачу с вышеупомянутой ошибкой.