例如:
String str1 = "1,2,3,5"; 考虑str1和str2里的数字个数有1000个,都以逗号分隔存放
String str2 = "1,2,4,6"; 如何实现:
1.找出在str1里有的,而在str2里没有的数字,并存放起来
2.找出在str1里没有的,而在str2里有的数字,并存放起来

解决方案 »

  1.   

    没抢到位呀        String str1="";//
            String str2="";//str2=2 * str1
            for(int i=0;i<1000;i++){
                str1+=(i)+",";
                str2+=(i*2)+",";
            }
            str1=str1.substring(0, str1.length()-2);
            str2=str2.substring(0, str2.length()-2);
            StringTokenizer st1=new StringTokenizer(str1,",");
            StringTokenizer st2=new StringTokenizer(str2,",");
            Vector<Integer> v1=new Vector<Integer>();
            Vector<Integer> v2=new Vector<Integer>();
            while(st1.hasMoreTokens()){
                v1.add(Integer.valueOf(st1.nextToken()));
            }
            while(st2.hasMoreTokens()){
                v2.add(Integer.valueOf(st2.nextToken()));
            }
            Vector<Integer> r1=new Vector<Integer>();//在str1里有的,而在str2里没有的数字
            for(int i=0,im=v1.size();i<im;i++){
                if(!v2.contains(v1.get(i))){
                    r1.add(v1.get(i));
                    System.out.println("1:"+v1.get(i));
                }
            }
            Vector<Integer> r2=new Vector<Integer>();//在str1里没有的,而在str2里有的数字,并存放起来
            for(int i=0,im=v2.size();i<im;i++){
                if(!v1.contains(v2.get(i))){
                    r2.add(v2.get(i));
                    System.out.println("2:"+v2.get(i));
                }
            }
      

  2.   

    再帖上代码……import java.util.ArrayList;
    import java.util.regex.*;public class TestSetMinus { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    String str1 = "1,2,3,4,5,6,7,8";
    String str2 = "3,4,5,11,44"; String reg = "-?\\d+"; Pattern p = Pattern.compile(reg);

    ArrayList<String> list1 = new ArrayList<String>(100);
    Matcher m1 = p.matcher(str1);
    while(m1.find()){
    list1.add(m1.group());
    }

    ArrayList<String> list2 = new ArrayList<String>(100);
    Matcher m2 = p.matcher(str2);
    while(m2.find()){
    list2.add(m2.group());
    }

    ArrayList<String> tempList = new ArrayList<String>(list1);
    tempList.removeAll(list2);
    System.out.println("str1 - str2:");
    for(int i=0; i<tempList.size(); i++){
    System.out.println(tempList.get(i));
    }

    tempList.clear();
    tempList.addAll(list2);
    tempList.removeAll(list1);
    System.out.println("str2 - str1:");
    for(int i=0; i<tempList.size(); i++){
    System.out.println(tempList.get(i));
    }
    }}
      

  3.   

    方法和前面说的相似附上代码,还可以简化点
    import java.util.ArrayList;
    import java.util.HashSet;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Set;
    public class Test1 {
    public static void main(String[] args) {
    String str1="1,2,3,4,5,6,7,8,9,0,0,3,4,5,10";
    String str2="11,2,35325,56,634,77,86,9,0,54,3,4,5,6,78,9,0";
    String [] strArray1=str1.split(",");
    String [] strArray2=str2.split(",");
    Set<String> set1=new HashSet();
    Set<String> set2=new HashSet();
    Set<String> tempset1=new HashSet();
    Set<String> tempset2=new HashSet();
    for(int i=0;i<strArray1.length;i++){
    set1.add(strArray1[i]);
    }
    for (int i=0;i<strArray2.length;i++){
    set2.add(strArray2[i]);
    }
    for (int i=0;i<strArray2.length;i++){
    if(!set1.contains(strArray2[i])){
    tempset1.add(strArray2[i]);
    }
    }
    for(int i=0;i<strArray1.length;i++){
    if(!set2.contains(strArray1[i])){
    tempset2.add(strArray1[i]);
    }
    }
    Iterator<String> it1=tempset1.iterator();
    while(it1.hasNext()){
    System.out.print(it1.next()+" ");

    }
    System.out.println();
    System.out.println("***************");
    Iterator<String> it2=tempset2.iterator();
    while(it2.hasNext()){
    System.out.print(it2.next()+" ");
    }
    }
    }
      

  4.   


    import java.util.*;
    public class JiaoJi{
        public static void main(String rags[]){
        String str1 = "1,2,3,5"; 
            String str2 = "1,2,4,6"; 
            String str1Arr[]=str1.split(",");
           String str2Arr[]=str2.split(",");
    List list1=Arrays.asList(str1Arr);
    List list2=Arrays.asList(str2Arr);
    List l1=new ArrayList(list1);
    List l2=new ArrayList(list2);
    l1.removeAll(l2);System.out.println(l1);
    l1=new ArrayList(list1);
    l2.removeAll(l1);System.out.println(l2);
    }
    }