日期:2014-05-20  浏览次数:20716 次

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


------解决方案--------------------
把两个数组转换成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中的数据吧
------解决方案--------------------
根据上面的意思把代码写给你.
Java code
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()+",");
        }
    }   
}

------解决方案--------------------
Java code
  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);
    }
  }

------解决方案--------------------
Java code

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中");
            }
        }
    }
}