jdk8中使用toMap主键冲突

转载本文章请标明作者和出处
本文出自爱喝纯净水的南荣牧歌

在这里插入图片描述

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

缘起

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

Map<Integer, String> collect1 = attendanceRecordList.stream()
	.collect(Collectors.toMap(AttendanceRecord::getPersonId, AttendanceRecord::getRecordTime);

解决

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

Map<Integer, String> collect1 = attendanceRecordList.stream()
	.collect(Collectors.toMap(AttendanceRecord::getPersonId, AttendanceRecord::getRecordTime, (oldValue, newValue) -> oldValue));
喜欢的朋友可以加我的个人微信,我们一起进步
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章