Lor*_*ith 9 java lambda predicate java-8
我有一个谓词,用于过滤同一实体对象的列表:
Predicate<DWHDeal> companyFilter = i -> i.getCompany().equals(company);
Run Code Online (Sandbox Code Playgroud)
我还必须在 DTO 列表上应用相同的过滤器,在完全相同的字段上使用完全相同的条件,其中 DTOS 是基于之前的实体构建的:
Predicate<DWHDealDTO> companyFilterDTO = i -> i.getCompany().equals(company);
Run Code Online (Sandbox Code Playgroud)
是否可以在不实例化两个不同谓词的情况下实现这一目标?如果可能的话,我想通过只制作一个Predicate.
假设getCompany()返回一个String你可以创建Predicate<String>:
Predicate<String> predicate = s -> s.equals(company);
Run Code Online (Sandbox Code Playgroud)
然后像这样使用它:
list.stream()
.filter(dto -> predicate.test(dto.getCompany()))
...
Run Code Online (Sandbox Code Playgroud)
但是没有太多好处,因为它需要几乎相同的代码。