可以用一行代码而不是两行代码来编写吗?因为我尝试在第一行中添加.distinct(),但以某种方式无法正常工作。我在这里没有区别。

List<BgwContract> contractListWithDuplicates = monthlyFeePaymentList
           .stream()
           .map(MonthlyFeePayment::getBgwContract)
           .collect(Collectors.toList());

List<BgwContract> contractListWithoutDuplicates = contractListWithDuplicates
           .stream()
           .distinct()
           .collect(Collectors.toList());

最佳答案

您可以将distinct与现有的Stream结合使用:

List<BgwContract> contractListWithDuplicates = monthlyFeePaymentList
       .stream()
       .map(MonthlyFeePayment::getBgwContract) // Stream<BgwContract>
       .distinct() // here
       .collect(Collectors.toList());

08-17 00:06