Java 比较对象中的两个以上条件
这更像是一个编程/逻辑问题。可以用任何编程语言回答(我希望是C/C++/Java/python,其他我可能不理解)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(
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);
}