爪哇国新游记之四----用于计算并集交集差集的工具类

这个类利用了DArray类,还可以顺带讲述门面模式。

import array.DArray;


public class CollectionUtil{
    private CollectionUtil(){
        // 避免用new生成类实例,可以没有
    }
    
    // 并集
    public static int[] union(int[] arr1,int[] arr2){
        DArray d=new DArray();
        
        // 找出在arr2中有而arr1中没有的,放到动态数组中
        for(int i=0;i<arr2.length;i++){
            if(exist(arr2[i],arr1)==false){
                d.add(arr2[i]);
            }
        }
        
        // 把arr1中的加进来
        for(int i=0;i<arr1.length;i++){
            d.add(arr1[i]);
        }
        
        return d.getArray();
    }
    
    // 判断一个数在一个数组中是否存在
    private static boolean exist(int num,int[] arr){
        for(int i=0;i<arr.length;i++){
            if(num==arr[i]){
                return true;
            }
        }
        
        return false;
    }
    
    // 交集
    public static int[] intersact(int[] arr1,int[] arr2){
        DArray d=new DArray();
        
        // 找出在arr2中有而arr1中也有的,放到动态数组中
        for(int i=0;i<arr2.length;i++){
            if(exist(arr2[i],arr1)==true){
                d.add(arr2[i]);
            }
        }
        
        return d.getArray();
    }
    
    // 差集
    public static int[] minus(int[] arr1,int[] arr2){
        DArray d=new DArray();
        
        // 找出在arr1中有而arr2中没有的,放到动态数组中
        for(int i=0;i<arr2.length;i++){
            if(exist(arr2[i],arr1)==false){
                d.add(arr2[i]);
            }
        }
        
        return d.getArray();
    }
    
    public static void main(String[] args){
        int[] arr1={2,3,5,7,9};
        int[] arr2={4,5,7,8};
        
        int[] arrUnion=CollectionUtil.union(arr1, arr2);
        System.out.print("arrUnion:");
        for(int i=0;i<arrUnion.length;i++){
            System.out.print(arrUnion[i]+",");
        }
        System.out.println();
        
    }
}
posted @ 2014-07-25 10:01  逆火狂飙  阅读(250)  评论(0编辑  收藏  举报
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东