有数组String[] a={1,2,3},String[] b={3,4,5};
要求打印出:
一、在数组a中,1,2在于b数组中不存在,3存在于数组b中;
二、在数组b中,4,5在数组a中不存在;
求具体算法如何写?

解决方案 »

  1.   

    把两个数组转换成List(这样去判断是否存在比较快)
    List data1 = Arrays.asList(a);
    List data2 = Arrays.asList(b);用三个ArrayList保存判断的结果(对应与上边的,{1,2},{3},{4,5})
    list1,list2,list3
    //处理a中的有,b没有的数据和a,b中都有的数据
    for(int i=0,i<a.length;i++)
    {
       if(data2.indexOf(a[i])!=-1)//表示a中的存在于b中
       {
             list2.add(a[i]);//list2表示a中存在于b中的元素的集合
       }else
       {
             list1.add(a[i]);
       }
    }for(int i=0;i<b.length;i++)
    {
        if(data1.indexOf(b[i]))
        {
             list3.add(b[i]);
        }
    }list1中的数据表示是a中有,而b中没有的
    list2中的数据表示是a,b中都有的
    list3中的数据表示b中有,而a中没有的.估计不会打印ArrayList中的数据.上网查一下如果显示ArrayList中的数据吧
      

  2.   

    根据上面的意思把代码写给你.
    import java.util.*;
    class ShuZuDemo{
    public static void main(String[] args){
    String   a[]   =   {"1","2","3","6","8","0"}; 
            String   b[]   =   {"3","4","5","8","9"}; 
            List   data1   =   Arrays.asList(a); 
            List   data2   =   Arrays.asList(b);
            List   list1   =   new ArrayList();
            List   list2   =   new ArrayList();
            List   list3   =   new ArrayList();
            for(int i=0;i <a.length;i++) 

           if(data2.indexOf(a[i])!=-1)//表示a中的存在于b中 
           { 
                      list2.add(a[i]);//list2表示a中存在于b中的元素的集合 
           }else 
           { 
                      list1.add(a[i]); 
           } 
    }  for(int  i=0;i <b.length;i++) 

             if(data1.indexOf(b[i])==-1) 
             { 
                      list3.add(b[i]); 
             } 
    }
    System.out.print("在数组a中");
    print(list2);
    System.out.println("存在于数组b中");
    System.out.print("在数组a中");
    print(list1);
    System.out.println("在于b数组中不存在");
    System.out.print("在数组b中");
    print(list3);
    System.out.println("在于a数组中不存在");
        }
        
        public static void print(List list){
         Iterator it=list.iterator();
         while(it.hasNext()){
         System.out.print(it.next()+",");
         }
        }   
    }
      

  3.   

      public static void main(String[] args) {
        String[] a = { "1", "2", "3" };
        String[] b = { "3", "4", "5" };
        Set<String> s1 = new HashSet<String>();
        for (String s : a) {
          s1.add(s);
        }
        Set<String> s2 = new HashSet<String>();
        for (String s : b) {
          s2.add(s);
        }    s1.removeAll(s2); // 去掉s1里面任何s2包含的东西
        
        for(String s : s1) {
          System.out.println(s);
        }
      }
    boolean removeAll(Collection<?> c)
    移除 set 中那些包含在指定 collection 中的元素(可选操作)。如果指定的 collection 也是一个 set,则此操作会实际修改此 set,这样其值是两个 set 的一个不对称差集。 
      

  4.   


    import java.util.Arrays;
    import java.util.List;/*
     * @功能描述:判断是否存在,分别遍历两个数组,如果存在,打印出来
     * @author sundful
     * 
     */
    public class ArrayTest {

    public static void main(String[] args) {

    String[] a={"1","2","3"};
    String[] b={"3","4","5"};

    List list1=Arrays.asList(a);
    List list2=Arrays.asList(b);

    for(Object s : list1)
    {
    if(list2.indexOf(s)!=-1)
    {
    System.out.println(s+"存在于数组b中");
    }else{

    System.out.println(s+"不存在于数组b中");
    }
    }
    for(Object s : list2)
    {
    if(list1.indexOf(s)!=-1)
    {
    System.out.println(s+"存在于数组a中");
    }else{
    System.out.println(s+"不存在于数组a中");
    }
    }
    }
    }