有一个项目表,每个项目最多有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),这太简单了。