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));
喜歡的朋友可以加我的個人微信,我們一起進步
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章