600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > JDK8 toMap之key重复报Duplicate key xxxx异常解决

JDK8 toMap之key重复报Duplicate key xxxx异常解决

时间:2020-04-03 14:20:06

相关推荐

JDK8 toMap之key重复报Duplicate key xxxx异常解决

最近项目中在使用JDK8中toMap方法遇到因key相同而导致toMap报错的情况,解决方案如下:

Collectors.toMap(keyMapper, valueMapper, mergeFunction)

第一个参数是要生成map的key,第二个参数是新生成map的value,第三个参数是当key发生重复时处理的方法,重复时需要返回一个数值放到当前value处。

示例1:重复时采用后面的value 覆盖前面的value

list.stream().collect(Collectors.toMap(Student::getClassName, Student::getStudentName, (value1, value2 )->{ return value2; }));

示例2:重复时将之前的value 和现在的value拼接或相加起来

list.stream().collect(Collectors.toMap(Student::getClassName, Student::getStudentName, (key1 , key2)-> key1 + "," + key2 ));

示例3:拼接key

list.stream().collect(Collectors.toMap(k -> k.getContentCode() + "_" + k.getContentVersion(), v -> v, (value1, value2 ) -> value2));

到此,问题解决。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。