Java 8流按列表过滤列表

普拉卡什

我需要在正式或非正式名称列表中存在的名称列表中按名字和姓氏过滤条件,并返回EmployeeDetails列表。以下是Pojo课程

public class EmployeeDetails {
    private NameDetails nameDetails;

    public NameDetails getNameDetails() {
        return nameDetails;
    }
    public void setNameDetails(NameDetails nameDetails) {
        this.nameDetails = nameDetails;
    }
}

public class NameDetails {
    private List<Name> officalName;
    private List<Name> unOfficialName;
    public List<Name> getOfficalName() {
        return officalName;
    }
    public void setOfficalName(List<Name> offiicalName) {
        this.officalName = offiicalName;
    }
    public List<Name> getUnOfficialName() {
        return unOfficialName;
    }
    public void setUnOfficialName(List<Name> unOfficialName) {
        this.unOfficialName = unOfficialName;
    }
}

public class Name {
    private String firstName;
    private String lastName;
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
}

我尝试使用OfficialNames列表进行过滤,但工作正常,但我也想过滤非官方名称中存在的名称。(或条件)

return employeeDetailList.stream().filter(employeeDetails->(employeeDetails.getNameDetails().getOffiicalName()).stream()
            .anyMatch(name-> (null!=name) && (firstName).equals(name.getFirstName()) && (lastName).equals(name.getLastName())))
            .collect(Collectors.toList());

帮我解决问题。谢谢

尤金

如果您无法覆盖equals/hashCode(如果可以的话,可以有一个更快的方法),那么:

  employeeDetailList             
         .stream()
         .filter(x -> Stream.concat(
                          x.getNameDetails().getOfficalName().stream(),
                          x.getNameDetails().getUnOfficialName().stream()
                      )
                     .anyMatch(y -> Objects.equals(y.getFirstName(), firstName) &&
                                    Objects.equals(y.getLastName(), lastName)))
         .collect(Collectors.toList());

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章