有4个HashSet<String>集合,set1,set2,set3,set4,怎样求出这四个集合的公共集合?
这个4个集合中,有可能有的集合为null,有的集合的size为0.
set有一个retainAll的方法 ,是取2个set集合公共数据。
但是有的集合可能为null,就是还没有初始化。
哪个集合为null不确定,这种情况是不是要一个一个的做if判断,共要做24种判断?
有没有简单点的办法,求解。
[解决办法]
对size为0的计算,对为null的不计算,如果两种情况都不计算的需要改判断条件
Set set = null;
if (set1 != null) {
if (set == null) {
set = set1;
}
}
if (set2 != null) {
if (set == null) {
set = set2;
} else {
set.retainAll(set2);
}
}
if (set3 != null) {
if (set == null) {
set = set3;
} else {
set.retainAll(set3);
}
}
if (set4 != null) {
if (set == null) {
set = set4;
} else {
set.retainAll(set4);
}
}
System.out.println(set);
Set<String> mainSet = new HashSet<String>();
if(set1!=null){
if(set2!=null){
set1.retainAll(set2);
}
if(set3!=null){
set1.retainAll(set3);
}
if(set4!=null){
set1.retainAll(set4);
}
mainSet = set1;
}
if(set2!=null){
if(set1!=null){
set2.retainAll(set1);
}
if(set3!=null){
set2.retainAll(set3);
}
if(set4!=null){
set2.retainAll(set4);
}
mainSet = set2;
}
if(set3!=null){
if(set2!=null){
set3.retainAll(set2);
}
if(set1!=null){
set3.retainAll(set1);
}
if(set4!=null){
set3.retainAll(set4);
}
mainSet = set3;
}
if(set4!=null){
if(set2!=null){
set4.retainAll(set2);
}
if(set3!=null){
set4.retainAll(set3);
}
if(set1!=null){
set4.retainAll(set1);
}
mainSet = set4;
}
return mainSet;