我想根据 ID 过滤公司。这就是我的代码的样子:
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;
我的代码可以工作,但我想知道是否有更短的方法。
最佳答案
看起来您正在创建一个从具有唯一标识符的 descriptions
Collection
中获取的 Company
实例列表。
现在,假设 Company
的标识符是唯一的,并且具有相同标识符的两个 Company
实例彼此等于
(即您的 Company
类以通过比较标识符来测试相等性的方式覆盖 equals
),您可以简单地收集不同的 Company
实例:
List<Company> vendors =
descriptions.stream()
.map(Description::getCompany)
.distinct()
.collect (Collectors.toList());
关于java - 根据 ID 过滤对象的简短方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33866767/