Java8流式操作遇见的坑

在使用java8的流式操作时候,收集器转map时候如果出现相同的key会出现抛出异常,其实这些都是重复的值,我应该怎么处理呢?
代码如下:


goods.stream().collect(Collectors.toMap(Goods::getSku, Function.identity());

事实上收集器还有第三个参数代表着重复key的处理策略。像下边这样

goods.stream().collect(Collectors.toMap(Goods::getSku, Function.identity(),(x1,x2)->x1);

不是流的坑,是你没用对

img

改成下面这个

goods.stream().collect(Collectors.toMap(Goods::getSku, Function.identity(),(k1,k2)->k2);

含义是,当遇到重复的key时,后面的键值对覆盖前面的。