功能描述:我有两组数据,如何找出他们的不相同的数据,并把不相同的数据提取出来,数据里存的是对像。请各路高手指点

解决方案 »

  1.   

    把一组数据读到一个Set,然后从第二组数据里读,set1 有的话就remove,没有的就add,最后剩下的就是所有不同的数据了;如果要分开放,就分开add,然后set1里剩下的是一组,set2里是一组;或者排序,然后遍历还有,就是两组数据本身有没有重复。如果有重复,排序后比较要简单些
      

  2.   

    java集合类里有求差集的方法。
    A和B求差,B再对A求差
    然后两个结果集求并
      

  3.   


    ArrayList a = new ArrayList();
    ArrayList b = new ArrayList();
    a.add("1");
    a.add("3");
    a.add("2");
    b.add("4");
    b.add("3");
    b.add("2");

    HashSet hs = new HashSet();

    hs.addAll(a);
    ArrayList c = (ArrayList) b.clone();
    c.removeAll(hs);
    System.out.println("B组与A组不同的元素为:"+c.toString());
    b.removeAll(c);
    System.out.println("B组与A组相同的元素为:"+b.toString());
    a.removeAll(b);
    System.out.println("A组与B组不同的元素为:"+a.toString());
      

  4.   

    将2组数据先存入一个对象数组中,对象必须实现equals方法。然后循环该数组,对每个数组元素进行计数,生成一个对象计数的MAP。最后将该MAP中计数为1的元素取出,就是2组中不同的数据。前提条件2组数据中本身不能存在重复的元素。
    时间复杂度O(N)
      

  5.   


    public static void main(String[] args) {
    List<String> listA = new ArrayList<String>();
    listA.add("AA");
    listA.add("BB");

    List<String> listB = new ArrayList<String>();
    listB.add("BB");
    listB.add("CC");

    listA.removeAll(listB);
    listA.addAll(listB);

    for(String str:listA){
    System.out.println(str);
    } }
    结果
    AA BB CC
      

  6.   


        listA.removeAll(listB);  <== listA里的BB被移走了,
        listA.addAll(listB);     <== 但是ListB的BB还在,listB又没变过, BB就又加进来了应该把B里面A的元素也remove,这样可能需要clone一下
    或者ListB的元素本身就是一个一个比较过才add
      

  7.   


    正解,如果是LZ的要求需要copy或者clone一个原始的listA
    结果应该是
    AA, CC