[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) 알고리즘 구현입니다. 이를 통해 제네릭을 활용하여 여러 타입의 데이터에 대해 동일한 정렬 알고리즘을 적용할 수 있습니다.
제네릭을 활용한 자료구조와 알고리즘 구현은 코드의 재사용성을 높이고, 유지보수를 용이하게 해주는 장점을 제공합니다. 이를 통해 보다 안정적이고 일반적인 코드를 작성할 수 있습니다.
참고문헌:
- Oracle, “제네릭 타입” (https://docs.oracle.com/javase/tutorial/java/generics/types.html)