在ID上过滤对象的简短方法

时间:2015-11-23 08:46:27

标签: java

我想基于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;

我的代码有效,但我想知道是否有更短的方式。

1 个答案:

答案 0 :(得分:1)

您似乎正在创建一个Company个实例的列表,该列表来自descriptions Collection,具有唯一标识符。

现在,假设Company的标识符是唯一的,并且具有相同标识符的两个Company实例彼此equals(即您的{{1} class以一种通过比较标识符测试相等性的方式覆盖Company,你可以简单地收集不同的equals实例:

Company