专栏首页13blog.siteJDK8 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的问题。

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • org.springframework.data.redis.serializer.SerializationException: Cannot serialize;

    前言 本文中提到的解决方案,源码地址在:perfect-ssm,希望可以帮你解决问题。 问题描述 在Spring与Redis整合过程中,出现了如下报错: ...

    我是十三
  • org.springframework.expression.spel.SpelEvaluationException: EL1011E: Method call: Attempted to call

    前言 本文中提到的解决方案,源码地址在:springboot-thymeleaf,希望可以帮你解决问题。 至于为什么已经写了一篇文章thymeleaf模板引擎调...

    我是十三
  • org.springframework.expression.spel.SpelEvaluationException: EL1004E: Method call: Method service()

    前言 本文中提到的解决方案,源码地址在:springboot-thymeleaf,希望可以帮你解决问题。 至于为什么已经写了一篇文章thymeleaf模板引擎调...

    我是十三
  • java lambda 容易掉进的2个坑

    这是为什么呢?因为默认情况下,也就是Collectors.toMap(k -> k, v -> v)未指定BinaryOperator<U> mergeFunc...

    luoxn28
  • 我的开发日记(四)

    今天有点跟mysql和mybatis杠上了,解决了两个问题都是这方面的,特别是复杂SQL在XML配置文件中的设置有点怀疑人生的感觉。

    FunTester
  • The consumer group[PushConsumer] has been created before, specify another name please

    MickyInvQ
  • spring boot 启动 NoClassDefFoundError: org/springframework/core/ErrorCoded 报错

    MickyInvQ
  • spring boot 启动报错Log4j2 could not find a logging implementation 解决

    MickyInvQ
  • 2019-03-17 生产系统cup100%负载问题解决

    Arthas支持JDK 6+,支持Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。

    Albert陈凯
  • JDK 10 的 109 项新特性

    精讲java

扫码关注云+社区

领取腾讯云代金券