我们可以像在这种情况下一样使用列表及其大小来检查复杂的条件



有一个项目表,每个项目最多有3种不同的操作(ACT1,ACT2,ACT3),但有些项目只有1或2个行为。另外,某些项目的重复行为,例如项目#2具有2个ACT3条目。

itemID- actionID1- ACT11- ACT21- ACT32 -ACT12- ACT32- ACT33- ACT13- ACT3

假设我们有一种getItemInfo(List<Integer> itemList)的方法来获取项目信息的结果,条件是结果仅在包含所有3个ACTS&amp&amp;的每个项目时才有效。项目列表中的所有项目必须出现在结果中&amp;最后,结果没有重复。

List<Integer> itemList=new ArrayList<Integer>();
itemList.add(1);
itemList.add(3);

然后运行getItemInfo(List<Integer> itemList)

结果将有效(满足所有条件),如以下示例:

1- ACT11- ACT21- ACT33- ACT13- ACT23- ACT3

结果将像此示例一样无效(cos项目#1不包含ACT3:

1- ACT11- ACT23- ACT13- ACT23- ACT3

结果将像此示例一样无效(cos项目#1包含重复ACT2):

1- ACT11- ACT21- ACT21- ACT33- ACT13- ACT23- ACT3

结果像这个示例一样无效(cos结果不包含项目#3):

1- ACT11- ACT21- ACT3

所以这里有1个解决方案,即我将所有结果放在列表中并检查重复,然后检查大小,例如:

//run via loop to put all result into a `List<String[]> resultList` 
& this `resultList` contains `String[]` like    
String[] s1={"1","act1"}
String[] s2={"1","act2"}
.....

然后

    if(!MyValidation.isDuplicated(resultList) && 
       resultList.size()==3*itemList.size() ){
          System.out.println("valid");
    }
    else{
         System.out.println("not valid");
    }

我的简单问题是,if(!MyValidation.isDuplicated(resultList) && resultList.size()==3*itemList.size() ){}可以用于检查上述所有条件吗?

简单:否。

分解:

 MyValidation.isDuplicated(resultList)

将检查任何重复项,没关系,但是

  resultList.size()*itemList.size()==3*itemList.size() 

相同
 resultList.size() == 3

(只是数学:如果A*B = 3*B,则A = 3),这太简单了。

最新更新