在java中,有段stream流,notifyInfoCCDetail.stream() .map(passengerDetailInfo -> new PassengerDetailInfoPhoneNbr( passengerDetailInfo.getPassengerPhoneNbr(), passengerDetailInfo.getEcifPhoneNbr(), passengerDetailInfo.getAgentPhoneNbr(), passengerDetailInfo.getCustomPhoneNbr(), passengerDetailInfo.getChnName(), passengerDetailInfo.getOldFltDt(), passengerDetailInfo.getOldDptAirportCd(), passengerDetailInfo.getOldArvAirportCd(), passengerDetailInfo.getOldFltNbr(), passengerDetailInfo.getNewFltDt(), passengerDetailInfo.getNewDptAirportCd(), passengerDetailInfo.getNewArvAirportCd(), passengerDetailInfo.getNewFltNbr() )) .distinct() .forEach(phoneList::add);。现在通过 .distinct()指定PassengerPhoneNbr,EcifPhoneNbr实现去重
时间: 2023-11-28 17:05:54 浏览: 38
怎么在java 8的map中使用stream
对于这段代码,你可以在 .distinct() 中传入一个自定义的比较器,指定 PassengerPhoneNbr 和 EcifPhoneNbr 作为去重的关键字段。具体实现可以参考下面的示例代码:
```
notifyInfoCCDetail.stream()
.map(passengerDetailInfo -> new PassengerDetailInfoPhoneNbr(
passengerDetailInfo.getPassengerPhoneNbr(),
passengerDetailInfo.getEcifPhoneNbr(),
passengerDetailInfo.getAgentPhoneNbr(),
passengerDetailInfo.getCustomPhoneNbr(),
passengerDetailInfo.getChnName(),
passengerDetailInfo.getOldFltDt(),
passengerDetailInfo.getOldDptAirportCd(),
passengerDetailInfo.getOldArvAirportCd(),
passengerDetailInfo.getOldFltNbr(),
passengerDetailInfo.getNewFltDt(),
passengerDetailInfo.getNewDptAirportCd(),
passengerDetailInfo.getNewArvAirportCd(),
passengerDetailInfo.getNewFltNbr()
))
.distinct(Comparator.comparing(PassengerDetailInfoPhoneNbr::getPassengerPhoneNbr)
.thenComparing(PassengerDetailInfoPhoneNbr::getEcifPhoneNbr))
.forEach(phoneList::add);
```
这里使用了 Java 8 中的新特性,通过方法引用来获取 PassengerPhoneNbr 和 EcifPhoneNbr 的值,然后使用 Comparator 来指定比较规则。需要注意的是,如果 PassengerPhoneNbr 和 EcifPhoneNbr 都相同才被视为重复。
阅读全文