Stack(스택)
- meaning: 쌓다
- 데이터를 차곡차곡 쌓아 올린 형태의 자료구조
- 마지막에 저장한 데이터를 가장 먼저 꺼내게 되는 특징 → LIFO(Last Input First Output)
- 샌드위치 🥪 생각하면 됨!!
- Thread-safe 하다
Stack 클래스 사용법
import java.util.Stack;
boolean empty() | stack이 비어있는지 |
Object pop() | stack의 맨 위에 저장된 객체 꺼내기 |
Object peek() | stack의 맨 위에 저장된 객체 반환, 꺼내진 않음(pop과의 차이점) |
Object push(Object item) | stack에 객체 넣기 |
int search(Object o) | stack 에서 주어진 객체를 찾아서 그 위치 반환, 못 찾으면 -1 배열과 달리 위치는 1부터 시작 (0 아님!) |
- 쉽게 말하자면..
- 값 넣기: push
- 값 빼기: pop
- 값 확인하기: peek
- 비었는지 확인하기: empty
- 찾고자 하는 값 위치 확인하기: search
⭐ 여기서 말하는 값은 최상단에 위치한 값이다! 가장 먼저 넣은 값은 가장 밑으로 가기 때문!!

예시 코드
import java.util.Stack;
public class Main {
public static void main(String[] args) throws Exception {
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);
System.out.println(stack.peek());
}
}
- stack.push(1); // 스택에 1 넣기
- stack.push(2); // 스택에 2 넣기
- stack.peek(); // 최상단 값, 즉 가장 최근에 넣은 값: 2 출력
import java.util.Stack;
public class Main {
public static void main(String[] args) throws Exception {
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.pop();
System.out.println(stack.peek());
}
}
- Exception in thread "main" java.util.EmptyStackException
at java.base/java.util.Stack.peek(Stack.java:102)
at Main.main(Main.java:10)
- stack.push(1); // 스택에 1 넣기
- stack.pop(); // 스택에서 최상단 값(1) 빼기
- stack.peek(); // 스택 최상단 값 출력 → 하지만 스택에 존재하는 값이 없으므로 EmptyStackException!
'Study > java' 카테고리의 다른 글
[java] Deque 클래스 메서드 (2) | 2025.04.08 |
---|---|
[java] Queue 클래스 메서드 (0) | 2025.04.08 |