안녕하새오.
오늘은 자바의 Stack 인터페이스에 대해 알아보겠습니다.
[ 목차 ]
Stack이란?
LIFO(Last In, First Out) 방식으로 작동하는 자료구조입니다.
java.util.Stack 패키지에 포함되어 있고, Vector 클래스를 상속받습니다.
(Vector 클래스는 멀티스레드 환경에서 동기화를 제공합니다)
동기화된 메서드를 제공하지만, Deque보다 느립니다.
1-based 인덱스를 사용합니다. (배열은 0-based 인덱스)
크기가 고정되어 있지 않습니다. OutOfMemoryError 발생하지 않는 한 무제한으로 push 가 가능합니다.
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
}
}
Stack 클래스의 주요 메서드
1. push(E e) : 스택의 맨 위에 요소를 추가하고 그 값을 반환합니다.
2. pop() : 스택의 맨 위의 요소를 제거하고 그 값을 반환합니다. 비어있다면 EmptyStackException이 발생합니다.
3. peek() : 스택의 맨 위의 요소를 제거하지 않고 값을 반환합니다. 비어있다면 EmptyStackException이 발생합니다.
4. empty() : 비어있다면 true, 아니라면 false를 반환합니다.
5. search(Obejct o) : 주어진 요소의 위치를 1-based 인덱스로 반환합니다. 존재하지 않는다면 -1을 반환합니다.
+ Vector를 상속받았기 때문에 Vector 클래스의 메서드들도 사용이 가능합니다.
(add / isEmpty / size / clear / contains / elementAt(idx) )
'JAVA' 카테고리의 다른 글
| [JAVA] 자바의 Map, 그리고 순회 (0) | 2024.12.10 |
|---|---|
| [JAVA] 인터페이스란(Interface)? - 추상클래스와의 차이 (1) | 2024.12.09 |
| [JAVA] Deque + 왜 LinkedList보다 ArrayDeque로 구현하는 것이 더 좋을까? (0) | 2024.12.06 |
| [Java] Queue (0) | 2024.12.05 |