[JAVA] int 배열의 중복제거

[JAVA] int 배열의 중복제거

 

유사시 사용하기 위해 만든 int 배열의 중복제거 코드.

수행 결과는 다음과 같다.

 

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

 

    public static void main(String[] args) {
        
        int[] intArray = {1, 2, 3, 4, 5, 1, 2, 3, 4, 5};
        int[] resultArray = removeDuplication(intArray);
        
        System.out.println(
“before : “ + convertToString(intArray, “,”));
        System.out.println(
“after : “ + convertToString(resultArray, “,”));
    }
    
    
    /**
     * 인트 배열을 출력하기 쉽도록 한줄 스트링 형태로 변환한다.
     */

    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();
    }
    
    
    /**
     * 인트 배열의 중복을 제거한다.
     */

    public static int[] removeDuplication(int[] inputArray) {
        if (inputArray == null || inputArray.length == 0) {
            return null;
        }
        
        int count = inputArray.length;
        int[] resultArray =
new int[count];
        
        int currentIndex = 0;

        int singleItem = 0;
        
        oLoop :
for (int i=0; i<count; i++) {
            singleItem = inputArray[i];
            
            for (int k=0; k<resultArray.length; k++) {
                if (resultArray[k] == singleItem) {
                    continue oLoop;
                }
            }
            
            resultArray[currentIndex] = singleItem;
            currentIndex++;
        }
        
        if (currentIndex != count) {
            resultArray = resizeIntArray(resultArray, currentIndex);
        }
        
        return resultArray;
    }
    
    
    /**
     * 인트 배열의 길이를 조정한다. (조정한 배열을 새로 얻는다)
     */

    public static int[] resizeIntArray(int[] inputArray, int newSize) {
        int lastIndex = -1;
        if (inputArray != null) {
            lastIndex = inputArray.length – 1;
        }
        
        int[] newArray =
new int[newSize];
        
        for (int i=0; i<newSize; i++) {
            if (i > lastIndex) {
                newArray[i] = 0;
            }
else {
                newArray[i] = inputArray[i];
            }
        }
        
        return newArray;
    }