什么是根据另一个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;
}
有没有更好的优化方法来实现这一目标?
答案 0 :(得分:1)
如果您可以使用Java 8,那么就像我这样做(来自apache commons的StringUtils):
return !employeeList.stream().anyMatch(employee ->
employee.getContactDetails()!=null &&
StringUtils.equals(telephoneExt, employee.getContactDetails().getNumber()))