根据subDTO中的属性值从ArrayList <objectdto>搜索objectDTO

时间:2016-01-20 12:36:08

标签: java

什么是根据另一个subDTO的属性值从arraylist搜索元素的最佳方法。

  

场景:我有Employee Object,它有另一个ContactDetails对象。   我需要在ext extNumber为1234的员工列表中找到Employee(extNumber是ContactDetails中的属性。我需要在创建新员工和分配新员工时检查ext是否可用。

     
    

不能直接使用JDBC查询,因为我正在使用corba api。没有提供此类搜索的任何corba api。

  

DTO有另一个subDto。

public class Employee {
  private String name;
  private ContactDetails contact;
}

public class ContactDetails {
  private String number;
}
  

我当前是怎么做的:我正在遍历列表并查看下面的extNumber

public boolean isTelephoneExtAvailable(String telephoneExt, List<Employee> employeeList) {
        boolean isAvailable = true;
        if(null != employeeList) {
        Iterator<Employee> itr = employeeList.iterator();
        while(itr.hasNext()){
            employeeList emp = itr.next();
            ContactDetails  contact = emp .getContactDetails();
            if(null != contact && null != contact.getNumber()){
                if(contact.getNumber().equals(telephoneExt)){
                    isAvailable = false;
                    break;
                }
            }
        }
    return isAvailable;
}

有没有更好的优化方法来实现这一目标?

1 个答案:

答案 0 :(得分:1)

如果您可以使用Java 8,那么就像我这样做(来自apache commons的StringUtils):

return !employeeList.stream().anyMatch(employee -> 
              employee.getContactDetails()!=null && 
              StringUtils.equals(telephoneExt, employee.getContactDetails().getNumber()))