我想根据那里筛选公司。这是我的代码的样子:

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/

10-13 04:23