轉載本文章請標明作者和出處
本文出自愛喝純淨水的南榮牧歌
緣起
今天線上產品經理新增了一個需求,其中我做了一個操作,將一個集合使用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));