我想根据那里筛选公司。这是我的代码的样子:
List<Company> vendors = new ArrayList<Company>();
descriptions.stream().forEach(desc -> {
long vendorID = desc.getCompany().getId().getLongValue();
if (vendors.stream().filter(vendor -> vendor.getId().getLongValue() == vendorID).count() == 0) {
vendors.add(desc.getCompany());
}
});
return vendors;
我的代码有效,但是我想知道是否有更短的方法。
最佳答案
似乎您正在创建从具有唯一标识符的Company
descriptions
提取的Collection
实例列表。
现在,假设Company
的标识符是唯一的,并且两个具有相同标识符的Company
实例彼此都是equals
(即,您的Company
类以测试是否相等的方式覆盖equals
比较标识符),您可以简单地收集不同的Company
实例:
List<Company> vendors =
descriptions.stream()
.map(Description::getCompany)
.distinct()
.collect (Collectors.toList());
关于java - 在ID上过滤对象的简短方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33866767/