A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵倩倩 中级黑马   /  2012-7-8 16:51  /  1912 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1、我的方法是将多个集合放入大的集合中  用第一个小集合与其他进行挨个比较 重复元素去掉剩下的加入第一个小集合中 代码如下
import java.util.*;
class JinshanTwo{

     public static void main(String[] args){
        
        
        ArrayList a1 = new ArrayList();
         a1.add("a");
         a1.add("b");
         a1.add("c");
            
         ArrayList a2 = new ArrayList();
         a2.add("c");
         a2.add("d");
         a2.add("e");
            
         ArrayList a3 = new ArrayList();
         a3.add("f");
         a3.add("e");
            
         ArrayList a4 = new ArrayList();
         a4.add("g");
   
         ArrayList a5 = new ArrayList();
         a5.add("h");
         a5.add("j");
        
         ArrayList lists = new ArrayList();
         lists.add(a1);
         lists.add(a2);
         lists.add(a3);
         lists.add(a4);
         lists.add(a5);
        
        Bjiao(lists);
        
         System.out.println(lists);
     }
   
     public static void Bjiao(ArrayList lists){
     //取出一个集合1,遍历其他几个集合,看是否有交集   
         //for循环的个数是不能少的牙,所以只能让循环的次数减少 那就外循环小内循环大呗、
         //又但是 这是顺序不能改变啊
         for(int i = 0 ;i< lists.size()-1;i++){
   
             List list1 = (List)lists.get(i);   
            
             for(int j = i+1;j < lists.size();j++){
                 List list2 = (List) lists.get(j);

                 boolean flag = false;
               
                 for(int k = 0 ;k < list2.size();k++){
                    
                     String str = (String) list2.get(k);            
                    
                     if(list1.contains(str)){
                        //一旦1,2两个集合有交集终止循环
                         flag = true;  
                         break;
                     }
                 }
               
                 if(flag){    //有交集的情况
                    //将第集合2中的相同元素移去
                     list2.removeAll(list1);
                      //将集合2加到几个1中
                     list1.addAll(list2);   
                     //   在lists中将集合2移除
                     lists.remove(list2);      
                     Bjiao(lists);     //递归调用
                 }   
             }   
         }
     }
}

2、我又再想  我为什么要把这些小集合放入大集合中呢 可不可以对集合名称进行编号 直接比较就行了 要不我还得用空间,定义个集合空间   大家啥意见

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

1 个回复

倒序浏览
用set跑一遍不就O了么

点评

好吧 啊啊啊啊啊啊。。。 不要这么犀利的回答 wo顿时2了 3Q  发表于 2012-7-8 17:33
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马