当前位置: 首页 >服务端 > JDK8 stream toMap() java.lang.IllegalStateException: Duplicate key异常解决(key重复)

JDK8 stream toMap() java.lang.IllegalStateException: Duplicate key异常解决(key重复)

测试又报bug啦

接到测试小伙伴的问题,说是一个接口不返回数据了,好吧,虽然不是我写的接口任务落到头上也得解决,本地调试了一下,好家伙,直接抛了个异常出来,这又是哪位大哥喝醉了写的代码...

	Exception in thread "main" java.lang.IllegalStateException: Duplicate key 	at java.util.stream.Collectors.lambda$throwingMerger$0(Collectors.java:133)	at java.util.HashMap.merge(HashMap.java:1254)	at java.util.stream.Collectors.lambda$toMap$58(Collectors.java:1320)	at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)	at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)

key重复异常解决

报错的那行代码如下:

Map<Long, Entity> entityMap= entityList.stream().collect(Collectors.toMap(Entity::getType, (entity) -> entity));

这行代码的目的就是将一个list对象转为map对象,以type为key,以entity对象为value。
但是与平常用的方法不同,而是直接使用java8的stream方式,报错也很清楚,就是key重复,也就是说在使用toMap方法时,有重复的type值导致了这个报错,最终解决方式如下:

Map<Long, Entity> entityMap= entityList.stream().collect(Collectors.toMap(Entity::getType, Function.identity(),(entity1,entity2) -> entity1));

使用toMap()的重载方法,如果已经存在则不再修改来避免重复key的问题。

顺便吐槽一下,这已经是多久前的代码了,怎么今天才报出这个错,也是醉了。

推荐一下本人近期维护的开源项目

JDK8 stream toMap() java.lang.IllegalStateException: Duplicate key异常解决(key重复) _ JavaClub全栈架构师技术笔记

Spring Boot 开源电商项目(含商城端和后台管理系统)https://github.com/newbee-ltd/newbee-mall

Spring Boot + Vue 前后端分离商城项目https://github.com/newbee-ltd/newbee-mall-vue-app

除注明转载/出处外,皆为作者原创,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。

作者:程序员十三
来源链接:https://www.cnblogs.com/han-1034683568/p/8624447.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/server/112307.html

标签:解决办法
分享给朋友:

“JDK8 stream toMap() java.lang.IllegalStateException: Duplicate key异常解决(key重复)” 的相关文章