当前位置: 首页 > 知识库问答 >
问题:

基于subDTO中的属性值从ArrayList中搜索objectDTO

孔安福
2023-03-14

基于另一个子DTO的属性值从arraylist中搜索元素的最佳方法是什么。

场景:我有Employee对象,它有另一个ContactDetails对象。我需要从extNumber为1234的员工列表中查找员工(extNumber是ContactDetails中的属性。我需要在创建新员工和分配新ext时检查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个答案

湛宏旷
2023-03-14

如果你可以使用Java8,我会像这样做(来自apache公共资源的StringUtils):

return !employeeList.stream().anyMatch(employee -> 
              employee.getContactDetails()!=null && 
              StringUtils.equals(telephoneExt, employee.getContactDetails().getNumber()))
 类似资料:
  • 我有一个对象的arraylistTile有我想创建一个搜索函数,在这里我迭代遍历瓷砖的每个属性和arraylist中每个颜色内的每个属性(就像每个循环的嵌套),有没有一种简单的方法可以做到这一点?

  • 我正在构建一个实用程序函数,它应该搜索属性名称,并在找到后返回其值。它应该递归地执行此操作: 但是,控制台日志将永远消失,浏览器将崩溃。我做错了什么? 编辑: 这就是我调用函数的方式:

  • 问题内容: 我正在尝试通过ID号来搜索客户的最佳方法。以下代码无法正常工作;编译器告诉我我缺少一条语句。 问题答案: 编译器抱怨是因为您当前在for循环中有’if(exist)’块。它必须在它之外。 话虽如此,有更好的方法来执行此搜索。就个人而言,如果我使用的是ArrayList,我的解决方案将类似于Jon Skeet发布的解决方案。

  • 我有一个具有以下结构的对象数组: 我希望输出为: 因为这两个都检查了。 我已尝试根据选中值筛选出: 我正在获取已选中属性值设置为。 我们将不胜感激。

  • 现在我有一个关于它的问题是,我想根据Employee class age属性对ArrayList进行排序。所以请解释一下我该如何排序。

  • 我对xslt有这个问题。样式表中有一个名为misctable的表,它被放在一个变量miscTables中。例如在节点 id="_384PLATE"具有值A1、A2、B1。当我标记并将其与xml进行比较时,我需要保存R[@i=2]/C/@i属性的值。在这种情况下,我需要得到值2,3,26 xml xslt 非常感谢。