我想基于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;
我的代码有效,但我想知道是否有更短的方式。
答案 0 :(得分:1)
您似乎正在创建一个Company
个实例的列表,该列表来自descriptions
Collection
,具有唯一标识符。
现在,假设Company
的标识符是唯一的,并且具有相同标识符的两个Company
实例彼此equals
(即您的{{1} class以一种通过比较标识符测试相等性的方式覆盖Company
,你可以简单地收集不同的equals
实例:
Company