java - 使用 Java 8 流在一行而不是两行中删除重复项

标签 java list duplicates java-stream

可以用一行代码而不是分开的两行代码来写吗?因为我尝试在第一行添加 .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());

关于java - 使用 Java 8 流在一行而不是两行中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58910485/

相关文章:

java - 根据字符串优先级减少对象列表

list - Azure ADF - HTTP : Table from list

列表计数元素的Python列表

C++ 从两个 vector 中删除重复元素

pandas - 根据值(重复)提取 Pandas 数据帧的子集?

java - 在 Java 中检索 HashMap 值

java - 通过 Eclipse 的 Maven Web 项目

mysql - 将可能的重复标记为不同的

java - 检查 MethodDeclaration 是否类似于 IMethod

python - 我需要一些帮助来查找列表中的列表中的内容(除其他外)