Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 比较对象中的两个以上条件_Java_Functional Programming - Fatal编程技术网

Java 比较对象中的两个以上条件

Java 比较对象中的两个以上条件,java,functional-programming,Java,Functional Programming,这更像是一个编程/逻辑问题。可以用任何编程语言回答(我希望是C/C++/Java/python,其他我可能不理解) for(int i=0;i2){/这取决于您的上下文。如果您想比较多个条件并确保所有条件都通过,您应该使用逻辑and和类似的 if (partsModel != null) { if (partsModel.getPartModel().equalsIgnoreCase(filterModel) && partsModel.getPartName(

这更像是一个编程/逻辑问题。可以用任何编程语言回答(我希望是C/C++/Java/python,其他我可能不理解)

for(int i=0;i
正如你所看到的,我对每个字段进行了不同的比较

因此,当任何字段与标准匹配时,它将被添加到数据结构中。这是我不想要的,除非它也满足了其他人。但同时,用户可能会将一些字段留空,这使得其中一些字段
null

假设满足1但不满足2,则应拒收


解决这个问题的最好办法是什么。或者我必须做9个(或者别的什么,我不擅长数学)如果3个比较。

你应该用
操作符
&&
进行比较

因此,当任何字段与条件匹配时,它将被添加到 数据结构。这是我不想要的,除非它也满足了其他人。 假设满足1但不满足2,则应拒收


您应该使用
运算符
&&

因此,当任何字段与条件匹配时,它将被添加到 数据结构。这是我不想要的,除非它也满足了其他人。 假设满足1但不满足2,则应拒收


这取决于你的背景。如果要比较多个条件并确保所有条件都通过,则应使用逻辑and和

if (partsModel != null) {
  if (partsModel.getPartModel().equalsIgnoreCase(filterModel) 
      && partsModel.getPartName().equalsIgnoreCase(filterProduct) 
      && partsModel.getPartSpecs().contains(filterDescription)) {
    partsModelList.add(partsModel);
  }
}
如果需要两个或两个以上的测试用例和/或您依赖多个测试用例,您可能更喜欢一些-

intpcount=0;
if(partsModel!=null){
if(partsModel.getPartModel().equalsIgnoreCase(filterModel))pCount++;
if(partsModel.getPartName().equalsIgnoreCase(filterProduct))pCount++;
if(partsModel.getPartSpecs().contains(filterDescription))pCount++;
}

如果(pCount>2){/这取决于您的上下文。如果您想比较多个条件并确保所有条件都通过,您应该使用逻辑and和类似的

if (partsModel != null) {
  if (partsModel.getPartModel().equalsIgnoreCase(filterModel) 
      && partsModel.getPartName().equalsIgnoreCase(filterProduct) 
      && partsModel.getPartSpecs().contains(filterDescription)) {
    partsModelList.add(partsModel);
  }
}
如果需要两个或两个以上的测试用例和/或您依赖多个测试用例,您可能更喜欢一些-

intpcount=0;
if(partsModel!=null){
if(partsModel.getPartModel().equalsIgnoreCase(filterModel))pCount++;
if(partsModel.getPartName().equalsIgnoreCase(filterProduct))pCount++;
if(partsModel.getPartSpecs().contains(filterDescription))pCount++;
}

if(pCount>2){/您可以将所有条件放在一个if语句中,如@Sanjeev所建议的。但是,如果您有许多条件,这可能会变得很难理解

您还可以反转每个条件,并跳过列表中当前迭代的其余部分。如果您有
If(a!=null&&a.equals(
),则反转为
If(a==null | | a.equals(

然后您的代码变成:

    for (int i = 0; i < partsModelMasterList.size(); i++) {
        PartsModel partsModel = partsModelMasterList.get(i);

        // compare model
        if (filterModel == null || !partsModel.getPartModel().equalsIgnoreCase(filterModel)) {
            continue;
        }
        // [...] Other two conditions removed for brevity

        partsModelList.add(partsModel);
    }
for(int i=0;i
但在这类典型的过滤中,您需要的是:

组合用户输入值的所有条件,但 如果用户未输入值,则不要筛选该值 条件

为了实现这一点,只有当用户输入了特定条件的值,并且该值与您正在检查的当前对象不匹配时,您才可以跳过循环中当前迭代的其余部分。然后,您的代码变成:

    for (int i = 0; i < partsModelMasterList.size(); i++) {
        PartsModel partsModel = partsModelMasterList.get(i);

        // compare model
        if (filterModel != null && !partsModel.getPartModel().equalsIgnoreCase(filterModel)) {
            continue;
        }
        // compare product name
        else if (filterProduct != null && !partsModel.getPartName().equalsIgnoreCase(filterProduct)) {
            continue;
        }
        // compare filterDescription
        else if (filterDescription != null && !partsModel.getPartSpecs().contains(filterDescription)) {
            continue;
        }
        partsModelList.add(partsModel);
    }
for(int i=0;i

我在有15个以上条件的代码中使用过类似的构造,我认为这是保持可读性的好方法。

如果@Sanjeev建议使用一个if语句,则可以将所有条件放在一个if语句中。但是,如果有许多条件,则可能很难阅读

您还可以反转每个条件,并跳过列表中当前迭代的其余部分。如果您有
If(a!=null&&a.equals(
),则反转为
If(a==null | | a.equals(

然后您的代码变成:

    for (int i = 0; i < partsModelMasterList.size(); i++) {
        PartsModel partsModel = partsModelMasterList.get(i);

        // compare model
        if (filterModel == null || !partsModel.getPartModel().equalsIgnoreCase(filterModel)) {
            continue;
        }
        // [...] Other two conditions removed for brevity

        partsModelList.add(partsModel);
    }
for(int i=0;i    for (int i = 0; i < partsModelMasterList.size(); i++) {
        PartsModel partsModel = partsModelMasterList.get(i);

        // compare model
        if (filterModel != null && !partsModel.getPartModel().equalsIgnoreCase(filterModel)) {
            continue;
        }
        // compare product name
        else if (filterProduct != null && !partsModel.getPartName().equalsIgnoreCase(filterProduct)) {
            continue;
        }
        // compare filterDescription
        else if (filterDescription != null && !partsModel.getPartSpecs().contains(filterDescription)) {
            continue;
        }
        partsModelList.add(partsModel);
    }