JAVA/포스팅

자바 컬렉션 프레임워크 Stack

짜집퍼박사(짜박) 2023. 11. 18. 00:32

Stack 클래스는 자바 컬렉션 프레임워크에서 제공하는 후입선출(LIFO, Last In First Out) 구조의 스택을 구현한 클래스입니다. 여기서는 Stack 클래스의 주요 특징과 사용법에 대해 설명하겠습니다.

 

1. 특징

- 후입선출 (LIFO): 마지막으로 추가된 요소가 가장 먼저 꺼내지는 구조를 가지고 있습니다.
- 상속: Stack 클래스는 Vector 클래스를 상속받아 구현되었기 때문에, Vector 클래스의 모든 메서드를 상속받습니다. (주의: Vector는 다소 구식의 클래스이므로 보통 ArrayList를 더 권장합니다.)

 

2. 사용법

2.1. 생성과 초기화

// 기본 생성자로 Stack 생성
Stack<String> stack = new Stack<>();

 

2.2. 요소 추가 및 제거

// 요소 추가
stack.push("Apple");
stack.push("Banana");
stack.push("Orange");

// 요소 제거 (가장 위의 요소 꺼내기)
String topElement = stack.pop();

 

2.3. 요소 접근

// 가장 위의 요소 확인 (꺼내지 않고)
String topElement = stack.peek();

 

2.4. 스택이 비어 있는지 확인

boolean isEmpty = stack.isEmpty();

 

2.5. 스택의 크기 확인

int size = stack.size();

 

2.6. 스택의 모든 요소 순회

// for-each 루프
for (String item : stack) {
    System.out.println(item);
}

// Iterator 사용
Iterator<String> iterator = stack.iterator();
while (iterator.hasNext()) {
    System.out.println(iterator.next());
}

 

2.7. 기타 메서드

// 스택에서 특정 요소의 위치 찾기 (가장 위의 요소부터 찾음)
int index = stack.search("Banana");

// 스택 비우기
stack.clear();

 

Stack 클래스는 주로 임시 데이터 저장이나 역추적(Backtracking) 등의 경우에 활용됩니다. 그러나 일반적인 상황에서는 LinkedList를 이용하여 스택을 구현하는 것이 더 선호되는 추세입니다.

 

With ChatGPT