Java 如何高效的比较两个同类型的数组,比如A和B,如果A中的元素在B中不存在,则添加到B中

解决方案 »

  1.   

    自己定义数据结构,自己覆盖CompareTo()就行了~
      

  2.   

    Set<Object> set=new HashSet<Object>(Arrays.asList(array1));
    set.addAll(Arrays.asList(array2));
    System.out.println(set);
      

  3.   

    简单好理解的方法, 但不一定最高效。 将两个数组放到hashmap中, key值为数组内容。
    然后判断 containskey
      

  4.   

    盗用四楼的,下面的可不可以:
    String[] a = {"1","2","3","4","5"};
    String[] b = {"1","2","3","4"};
    Set <Object> set=new HashSet <Object>(Arrays.asList(b)); 
    set.addAll(Arrays.asList(a)); 
    System.out.println(set);
      

  5.   


    public T[] concat(T[] arr1, T[] arr2) { 
    Set<T> set = new HashSet<T>(Arrays.asList(arr2));
    set.addAll(Arrays.asList(arr1)); 
    return (T[])set.toArray();
     
    }
      

  6.   

    String[] s1 = { "1", "2" ,"2"}; 
    String[] s2 = { "3", "4" }; 
    String[] s3 = new String[s1.length + s2.length]; 
    System.arraycopy(s1, 0, s3, 0, s1.length); 
    System.arraycopy(s2, 0, s3, s1.length, s2.length); 
    System.out.println(Arrays.toString(s3));
      

  7.   

    直接把两个数组都放进HashSet里去
      

  8.   


    HashSet类实现了Set接口,所以不能有重复的元素.有也不会打印出来
      

  9.   

    如果数组是字符串的话Set就去除重复了吧,要是对象数组的话需要重写hashCode和equals方法
      

  10.   

    如果数组 A={"a","b","c"}
        数组 B= {"a","a"}
       那最终结果是  C={"a","b","c"}了吧,
       难道不是      C={"a","a","b"."c"}吗?
    只是说添加元素,没说把 "a"删除吧,   
      

  11.   

    好是好,就是不能有重复数据,不然就被SET干掉了
      

  12.   

    这样就可以了 List bList = new ArrayList(Arrays.asList(bbb));
    for(int i=0;i<aaa.length;i++)
    {
    //如果A得数据在B中不存在,就放到B中
    if(false == bList.contains(aaa[i]))
    {
    bList.add(aaa[i]);
    }
    }
      

  13.   


    public static void main(String[] args) {
    // TODO Auto-generated method stub
    String[] aaa = {"aa","bb","cc","dd","aa","aa"};
    String[] bbb = {"aa","bbcc","eee"};

    //网上的答案,会把重复的数据干掉,不是正确答案
    // HashSet<String> set =  new HashSet<String>(Arrays.asList(aaa));
    // set.addAll(Arrays.asList(bbb));
    // System.out.println(set);

    //我写的,OK
    List bList = new ArrayList(Arrays.asList(bbb));
    for(int i=0;i<aaa.length;i++)
    {
    //如果A得数据在B中不存在,就放到B中
    if(false == bList.contains(aaa[i]))
    {
    bList.add(aaa[i]);
    }
    }
    System.out.println(bList);
    }
      

  14.   

    Set <Object> set=new HashSet <Object>(Arrays.asList(array1));
    for(int i = 0 ; i < array2.size() ; i++){
        int size = set.size();
        set.add(array2.get(i));
        if(set.size() > size){
             array1.add(array2.get(i));
           }
       }