jdk8中使用toMap主键冲突

您所在的位置:网站首页 jdk8源码编译异常 jdk8中使用toMap主键冲突

jdk8中使用toMap主键冲突

2023-07-05 03:46| 来源: 网络整理| 查看: 265

jdk8中使用toMap主键冲突 原创

wx58c8fa5d0b356 2022-01-23 13:45:43 博主文章分类:BUG ©著作权

文章标签 java stream jdk bug 解决方案 文章分类 代码人生

©著作权归作者所有:来自51CTO博客作者wx58c8fa5d0b356的原创作品,请联系作者获取转载授权,否则将追究法律责任

jdk8中使用toMap主键冲突_stream

开始行动,你已经成功一半了,献给正在奋斗的我们

缘起

今天线上产品经理新增了一个需求,其中我做了一个操作,将一个集合使用jdk8分解成一个map,结果抛出了异常,是因为map的键冲突了,那我我们就想了,如果我们想保留其中一个而不是直接抛出异常该怎么做呢?原代码如下:

Map collect1 = attendanceRecordList.stream() .collect(Collectors.toMap(AttendanceRecord::getPersonId, AttendanceRecord::getRecordTime); 解决

网上查询了一下解决方案,其实很简单,Collectors.toMap方法提供了第三个参数,我们可以指定在重复的时候使用新的还是旧的,就是是否需要将旧的覆盖,代码如下:

Map collect1 = attendanceRecordList.stream() .collect(Collectors.toMap(AttendanceRecord::getPersonId, AttendanceRecord::getRecordTime, (oldValue, newValue) -> oldValue));

收藏 评论 分享 举报

上一篇:求topK问题的工具类(纯代码)

下一篇:剑指offer | 面试题15:二进制中1的个数



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3