[java] 제네릭을 활용한 알고리즘 구현

제네릭은 Java에서 다양한 타입의 객체를 다루는 클래스나 메서드를 구현할 때 사용되는 강력한 기능입니다.

제네릭을 활용하여 자료구조를 구현하면, 다양한 타입의 데이터를 보다 안전하게 다룰 수 있습니다. 또한, 알고리즘을 구현할 때에도 동일한 로직을 여러 타입의 데이터에 대해 재활용할 수 있어 유용합니다.

제네릭을 활용한 스택 구현

public class Stack<T> {
    private List<T> elements;

    public Stack() {
        elements = new ArrayList<>();
    }

    public void push(T element) {
        elements.add(element);
    }

    public T pop() {
        if (elements.isEmpty()) {
            throw new NoSuchElementException();
        }
        return elements.remove(elements.size() - 1);
    }
}

위의 예시는 제네릭을 활용한 스택(Stack) 구현입니다. 제네릭을 사용하여 다양한 타입의 요소를 담을 수 있으며, 사용 시에도 명시한 타입에 맞게 요소를 추가하거나 제거할 수 있습니다.

제네릭을 활용한 정렬 알고리즘 구현

public class Sort {
    public static <T extends Comparable<T>> void bubbleSort(T[] array) {
        int n = array.length;
        for (int i = 0; i < n-1; i++) {
            for (int j = 0; j < n-i-1; j++) {
                if (array[j].compareTo(array[j+1]) > 0) {
                    T temp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = temp;
                }
            }
        }
    }
}

위의 예시는 제네릭을 활용한 버블 정렬(Bubble Sort) 알고리즘 구현입니다. 이를 통해 제네릭을 활용하여 여러 타입의 데이터에 대해 동일한 정렬 알고리즘을 적용할 수 있습니다.

제네릭을 활용한 자료구조와 알고리즘 구현은 코드의 재사용성을 높이고, 유지보수를 용이하게 해주는 장점을 제공합니다. 이를 통해 보다 안정적이고 일반적인 코드를 작성할 수 있습니다.

참고문헌: