简短的回答:你错过了合并功能:
.collect(toMap(Map.Entry::getKey,Map.Entry::getValue, (l, r) -> l, LinkedHashMap::new));
即(l,r) – >我上面.
答案很长:
你想要使用toMap重载,当文档调用它时需要一个“mapFactory”,实际上它是一个供应商,提供一个新的空映射,结果将插入其中.
现在看看如何定义重载:
toMap(Function super T,? extends K> keyMapper,
Function super T,? extends U> valueMapper,
BinaryOperator mergeFunction,
Supplier mapFactory)
正如您所看到的,为了提供“mapFactory”,需要使用mergeFunction,否则编译器会认为您正在尝试使用此重载:
toMap(Function super T,? extends K> keyMapper,
Function super T,? extends U> valueMapper,
BinaryOperator mergeFunction)
因此它失败了上述错误.