首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

高分求算法:怎么判断一数组的值是否存在于另一数组中?

2012-01-11 
高分求算法:如何判断一数组的值是否存在于另一数组中???有数组String[] a{1,2,3},String[] b{3,4,5}要

高分求算法:如何判断一数组的值是否存在于另一数组中???
有数组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中");            }        }    }} 

热点排行
Bad Request.