首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用subclass的值过滤一个类的流

使用subclass的值过滤一个类的流
EN

Stack Overflow用户
提问于 2019-07-19 00:09:24
回答 1查看 57关注 0票数 1

我有一个父类Company,它有一个Employee对象列表。我需要创建一个流的Parent类谁有一个带有提到的电话号码的Employee

代码语言:javascript
复制
Company cmp1 = new Company();
cmp1.setName("oracle");

Company cmp2 = new Company();
cmp1.setName("Google");

Employee emp1 = new Employee();
emp1.setName("David");
emp1.setPhone("900");
Employee emp2 = new Employee();
emp2.setName("George");
emp2.setPhone("800");
Employee emp4 = new Employee();
emp4.setName("BOB");
emp4.setPhone("300");
Employee emp5 = new Employee();
emp5.setName("taylor");
emp5.setPhone("900");

List<Employee> cmp1EmpList1 = new ArrayList<Employee>();
cmp1EmpList1.add(emp1);
cmp1EmpList1.add(emp2);
cmp1.setEmployees(cmp1EmpList1);

List<Employee> cmp1EmpList2 = new ArrayList<Employee>();
cmp1EmpList2.add(emp4);
cmp1EmpList2.add(emp5);

cmp2.setEmployees(cmp1EmpList2);

List<Company> companies = Arrays.asList(cmp1, cmp2);

为了检索流,我尝试添加以下代码

代码语言:javascript
复制
List<Company> companiesWithEmployeesphone800 = companies.stream()
    .filter(loc -> loc.getEmployees()
                    .stream()
                    .flatMap(locnew -> locnew.getPhone()
                                        .equalsIgnoreCase("800"))
            )
    .collect(Collectors.toList());

但是收到了不兼容的类型。

EN

回答 1

Stack Overflow用户

发布于 2019-07-19 00:13:30

使用anyMatch代替flatMap作为谓词:

代码语言:javascript
复制
List<Company> companiesWithEmployeesphone800 =
    companies.stream()
            .filter(loc -> loc.getEmployees().stream()
                    .anyMatch(locnew -> locnew.getPhone().equalsIgnoreCase("800")))
            .collect(Collectors.toList());
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57098707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档