[JAVA] Generic int 배열인 ArrayList의 중복제거

[JAVA] Generic int 배열인 ArrayList의 중복제거

int 배열의 중복제거는 여기로 => [JAVA] int 배열의 중복제거 (http://blog.naver.com/bb_/221337104683)

Generic int 배열인 ArrayList의 중복제거 코드.

흔하게 필요하지는 않겠지만, 유사시 사용하기 위해 만들었다.

수행 결과는 다음과 같다.

before : 1,2,3,4,5,1,2,3,4,5
1,2,3,4,5,1,2,3,4,5
1,2,3,4,5,1,2,3,4
1,2,3,4,5
1,2,3,4,5
 
after : 1,2,3,4,5,1,2,3,4,5
1,2,3,4,5,1,2,3,4
1,2,3,4,5

    public static void main(String[] args) {
        
        int[] intArray1 = {1, 2, 3, 4, 5, 1, 2, 3, 4, 5};
        int[] intArray2 = {1, 2, 3, 4, 5, 1, 2, 3, 4, 5};
        int[] intArray3 = {1, 2, 3, 4, 5, 1, 2, 3, 4};
        int[] intArray4 = {1, 2, 3, 4, 5};
        int[] intArray5 = {1, 2, 3, 4, 5};
        
        ArrayList<int[]> intArrayList = new ArrayList<int[]>();
        intArrayList.add(intArray1);
        intArrayList.add(intArray2);
        intArrayList.add(intArray3);
        intArrayList.add(intArray4);
        intArrayList.add(intArray5);
        
        ArrayList<int[]> resultList = removeDuplication(intArrayList);
        
        System.out.println(“before : “ + convertToString(intArrayList));
        System.out.println(” “);
        System.out.println(“after : “ + convertToString(resultList));
    }
    
    
    /**
     * Generic int 배열인 ArrayList 를 출력용 스트링으로 변환한다.
     */

    public static String convertToString(ArrayList<int[]> inputList) {
        if (inputList == null || inputList.size() == 0) {
            return “”;
        }
        
        StringBuffer buff = new StringBuffer();
        
        int count = inputList.size();
        for (int i=0; i<count; i++) {
            if (buff.length() > 0) {
                buff.append(“\n”);
            }
            
            buff.append(convertToString(inputList.get(i), “,”));
        }
        
        return buff.toString();
    }
    
    
    /**
     * int 배열을 출력용 스트링으로 변환한다.
     */

    public static String convertToString(int[] inputArray, String delimiter) {
        if (inputArray == null || inputArray.length == 0) {
            return “”;
        }
        
        StringBuffer buff = new StringBuffer();
        
        int count = inputArray.length;
        for (int i=0; i<count; i++) {
            if (buff.length() > 0) {
                buff.append(delimiter);
            }
            
            buff.append(inputArray[i]);
        }
        
        return buff.toString();
    }
    
    
    /**
     * Generic int 배열인 ArrayList 의 중복을 제거한다.
     */

    public static ArrayList<int[]> removeDuplication(ArrayList<int[]> inputList) {
        if (inputList == null || inputList.size() == 0) {
            return null;
        }
        
        int count = inputList.size();
        ArrayList<int[]> resultList = new ArrayList<int[]>();
        
        int[] singleItem = null;
        
        oLoop : for (int i=0; i<count; i++) {
            singleItem = inputList.get(i);
            
            for (int k=0; k<resultList.size(); k++) {
                if (equals(singleItem, resultList.get(k))) {
                    continue oLoop;
                }
            }
            
            resultList.add(singleItem);
        }
        
        return resultList;
    }
    
    
    /**
     * int 배열이 같은지 비교한다.
     */

    public static boolean equals(int[] arr1, int[] arr2) {
        if (arr1 == null && arr2 == null) {
            return true;
        }
        
        if (arr1 == null || arr2 == null) {
            return false;
        }
        
        if (arr1.length != arr2.length) {
            return false;
        }
        
        int count = arr1.length;
        for (int i=0; i<count; i++) {
            if (arr1[i] != arr2[i]) {
                return false;
            }
        }
        
        return true;
    }