有2个ArrayList A,B;A 里面有4个数据,B里面有6个数据,B包含A:就是A的数据在B里面都有,我想对这俩个ArrayList进行比较,想得到在B里面除A含有的数据以外的那2条数据。请各位帮想个高效的算法,谢谢!

解决方案 »

  1.   

    public boolean equles(ArrayList a,ArrayList b)
    {
        if(a==b)return true;
        if(a.length()!=b.length()) return false;
        for(int i=0;i<a.length();i++)
        {
             if(!(a.get(i).equles(b.get(i)))retrun false;
         }
    }没开IDE,我发现不不会写代码了....要命哦
      

  2.   

    好像Apache的collection-common有类似的实现
      

  3.   

    liang8305(菜鸟!舍我其谁?) ( ) 信誉:100 
      这样似乎不妥,万一是这样的呢1,2,3,4,5 和3,4,2呢
      其实应该很简单,就把他当个数组的想,就可以了,一个个遍历进行比较
      

  4.   

    yitianyidian(至之) 
    你的意思是2个for循环嵌套?看看我这样对不?ArrayList a, b,c;
    for(int i = 0; i < a.size; i++) {
       for(int j = 0; j < b.size; j++) {
          if(a.get(i).equals(b.get(i))) {
             break;
        }
         else {
          c.add(b.get(i));
          break;
        }
      }
    }
    ArrayList c 是存储在B里面与A不同的对象;看看我这么写有问题吗?
      

  5.   

    调出来了吗,肯定没有吧,里边写错东西了
    for(int i = 0; i < a.size(); i++) {
       for(int j = 0; j < b.size(); j++) {
          if(a.get(i).equals(b.get(j))) 
             {a.remove(j);break;} 
           c.add(b.get(i));
       }
    }
    这样写,看看行不行
      

  6.   

    上边写错了
    if(a.get(i).equals(b.get(j))) 
             {a.remove(i);break;} 
           c.add(a.get(i));
    sorry
      

  7.   

    yitianyidian(至之) ( ) 信誉:100  2006-07-07 22:18:00  得分: 0  
      liang8305(菜鸟!舍我其谁?) ( ) 信誉:100 
      这样似乎不妥,万一是这样的呢1,2,3,4,5 和3,4,2呢
     其实应该很简单,就把他当个数组的想,就可以了,一个个遍历进行比较
    1,2,3,4,5 和3,4,2呢,长度都不一样,那个length()比较直接就把你打回去了...呵呵
      
    另:难道我那个不算历遍?
     
      

  8.   

    另外...我想补充一点ArrayList 应该有个顺序问题
    1.2.3.4.5的ArrayList 和2.3.4.5.1的ArrayList 算不算相等?
    这个只能看需求了....我写的那个是要求顺序一致
      

  9.   

    arraylist自带的算法不用,却偏偏自己写一个效率低的多的算法。无语……