假设我有两个ArrayList,分别是
A:a,b,c,e
B:a,c,d,现在我需要找出A有而B没有(即b,e),B有而A没有(即d),除了使用for遍历意外,还有没有其他方法?

解决方案 »

  1.   

    这种算法还是自己写吧。1、用for遍历查找。时间复杂度是N平方。
    ArrayList A;
    ArrayList B;
    //不做赋值了,不好意思。
    ArrayList A1=new ArrayList();//存放A中有,B中无
    ArrayList B1=new ArrayList();//存放B中有,A中无
    ArrayList C1=new ArrayList();//存放两者相同的。
    for(String a:A){
      for(String b:B){
       if(a.eqauls(b)){
          C1.add(a);
          break;
       }
      }
    }
    //用1个N复杂度的遍历把A中有B中无的,从C1中挑出.
    //用1个N复杂度的遍历把B中有A中无的,从C1中挑出.2、先把A和B排序。
    然后比较两者,找出满足要求的。
    这个时间复杂度花在排序上面,之后的比较是需要N的时间复杂度。