【发布时间】:2021-11-30 09:01:04
【问题描述】:
我有这个逻辑,我根据供应商 ID 列表vendors 进行过滤。在迭代此流之前,集合中已经有 2 个项目与 vendors 列表中的供应商 ID 相同。但是,一旦列表被处理,重复项就不会被过滤,我会得到另外两个项目。
这是如下代码。否定条件的filter 有什么问题?
List<Vendor> nonConfiguredVendors = null;
if (entities.isEmpty()) {
nonConfiguredVendors = vendors;
} else {
nonConfiguredVendors = vendors.stream()
.filter(vendor -> entities.stream()
.anyMatch(entity -> !vendor.getVendorId().equalsIgnoreCase(entity.getVendorId())))
.peek(System.out::println)
.collect(Collectors.toList());
}
编辑:vendors 的 ID 从 FC_101 到 FC_150。 entities 已经有 FC_133 和 FC_140 再次添加到 nonConfiguredVendors 列表中
【问题讨论】:
-
您希望删除这段代码的哪一部分?过滤器不会去重,它只是检查供应商 ID 是否与实体流中的任何内容不匹配。
-
添加了进一步阐述的编辑
-
你能写一个简单的示例输入和预期的输出吗?
标签: java lambda java-stream