[java] 자바 스택 구현시 제네릭 사용하기

자바에서 스택을 구현할 때 제네릭을 사용하여 타입 안전성을 보장할 수 있습니다.

스택(Stack)은 후입선출(Last-In-First-Out) 원칙에 따라 동작하는 자료구조입니다. 이번 포스트에서는 자바에서 스택을 구현할 때 제네릭을 사용하는 방법에 대해 알아보겠습니다.

제네릭(Generic)이란?

제네릭은 클래스에서 사용할 타입을 정의하는데 사용되는 기능으로, 클래스나 메서드에서 다양한 타입을 지원하기 위해 도입된 기능입니다. 제네릭을 사용하면 코드의 재사용성과 타입 안전성을 높일 수 있습니다.

제네릭 스택 구현하기

제네릭을 사용하여 스택을 구현할 때에는 다음과 같은 단계를 따릅니다.

1. 제네릭 타입 정의하기

제네릭을 사용하기 위해 스택 클래스를 정의할 때, 클래스명 옆에 <T>와 같은 형태로 제네릭 타입을 지정합니다. 여기서 T는 타입 매개변수를 의미하며, 이는 사용자가 클래스를 사용할 때 실제 타입으로 대체됩니다.

public class Stack<T> {
    // 스택 관련 필드와 메서드 구현
}

2. 제네릭 타입 활용하기

제네릭을 사용하여 스택 클래스를 정의한 후에는 해당 타입을 필드나 메서드의 매개변수 등으로 활용할 수 있습니다. 예를 들어, 아래의 코드는 제네릭을 사용하여 스택에 값을 넣고 뺄 수 있는 pushpop 메서드를 구현한 예시입니다.

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

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

    public void push(T value) {
        stack.add(value);
    }

    public T pop() {
        if (stack.isEmpty()) {
            throw new NoSuchElementException("Stack is empty");
        }
        return stack.remove(stack.size() - 1);
    }
}

3. 제네릭 타입으로 인스턴스 생성하기

제네릭 타입으로 정의된 스택을 사용하기 위해서는 타입을 지정해주어야 합니다. 예를 들어, String 타입의 스택을 생성하려면 다음과 같이 인스턴스를 생성합니다.

Stack<String> stack = new Stack<>();

위의 예시에서는 Stack 클래스가 String 타입으로 파라미터화되어 스택 객체를 생성하였습니다.

결론

자바에서 스택을 구현할 때 제네릭을 사용하면 타입 안전성을 보장할 수 있습니다. 제네릭을 활용하면 다양한 타입의 데이터를 스택에 저장하고 관리할 수 있으며, 코드의 재사용성과 가독성을 향상시킬 수 있습니다.