首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

有四个HashSet<String>集合,set1,set2,set3,set4,怎样求出这四个集合的公共集合

2013-08-13 
有4个HashSetString集合,set1,set2,set3,set4,怎样求出这四个集合的公共集合?这个4个集合中,有可能有的

有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;

热点排行