求助 两个 数组  差集 ,或交集
arrayA={01,02,03,04,05,06}
arrayB={02,03,09,10,11,12,14,15}
通过比较要得到他们差集.

解决方案 »

  1.   

    用equals遍历比较两个数组
    双重循环把相同的找出来就是交集
    删除本数组中任何存在于另一数组中元素剩下的就是差集
      

  2.   

    转为Set
    遍历a,看b里面是否包含,包含就删,不包含就添到b里面
      

  3.   

    import java.util.Arrays;
    import java.util.HashSet;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Set;
    public class TestArrUnite
    {
    private  Integer[]  arr1 ={1,2,3};
    private  Integer[]  arr2 ={2,3,4};
    public static void main(String[] args)
    {
    TestArrUnite test = new TestArrUnite();
    Integer UniteArr [] = test.uniteArr();
    Arrays.sort(UniteArr);
    for(int i:UniteArr){
    System.out.print(i+ " "); }
    System.out.println();
    Integer ChaArr [] = test.chaArr();
    Arrays.sort(ChaArr);
    for(int i:ChaArr){
    System.out.print(i+ " ");
    }
    }
    public Integer[] uniteArr(){
    List arrL1= Arrays.asList(arr1);
    List arrL2= Arrays.asList(arr2);

    Set hst = new HashSet(arrL1);
    hst.addAll(arrL2); return (Integer [])hst.toArray(new Integer [0]);
    }
    public Integer[] chaArr(){
    List arrL1= Arrays.asList(arr1);
    Set hst = new HashSet(arrL1);
    for(Integer i:arr2){
    if(!hst.add(i)){
    hst.remove(i);
    }
    }
    return (Integer []) hst.toArray(new Integer[0]);
    }
    }
      

  4.   

    import java.util.*;
    public class Sets {
        /**交集*/
        public static Set<String> intersection(Set<String> setA, Set<String> setB) {
            Set<String> setIntersection = new HashSet<String>();
            String s = "";
            Iterator<String> iterA = setA.iterator();
            while (iterA.hasNext()) {
                s = iterA.next();
                if(setB.contains(s)) {
                    setIntersection.add(s);
                }
            }
            return setIntersection;
        }
        /**差集*/
        public static Set<String> difference(Set<String> setA, Set<String> setB) {
            Set<String> setDifference = new HashSet<String>();
            String s = "";
            Iterator<String> iterA = setA.iterator();
            while (iterA.hasNext()) {
                s = iterA.next();
                if(!setB.contains(s)) {
                    setDifference.add(s);
                }
            }
            return setDifference;
        }
        
        public static void main(String[] args) {
            String[] strA = {"green", "blue", "red", "pink", "yellow"},
                     strB = {"red", "green"}; 
            Set<String> setA = new HashSet<String>(),
                        setB = new HashSet<String>(),
                        setC = null;
            
            /**将数组元素加到集合*/
            for (int i = 0; i < strA.length; i++) {
                setA.add(strA[i]);
            }
            for (int i = 0; i < strB.length; i++) {
                setB.add(strB[i]);
            }
            
            /**求交集结果*/
            setC = intersection(setA, setB);
            System.out.println("交集: " + setC);
            /**求差集结果*/
            setC = difference(setA, setB);
            System.out.println("差集: " + setC);
            
        }
    }