[java] Stack 클래스 메서드

Stack(스택)

  • meaning: 쌓다
  • 데이터를 차곡차곡 쌓아 올린 형태의 자료구조
  • 마지막에 저장한 데이터를 가장 먼저 꺼내게 되는 특징 → LIFO(Last Input First Output)
  • 샌드위치 🥪 생각하면 됨!!
  • etc-image-0
  • 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

⭐ 여기서 말하는 값은 최상단에 위치한 값이다! 가장 먼저 넣은 값은 가장 밑으로 가기 때문!!
 

etc-image-1
이 장난감과 똑같음 .... . .. .

 

예시 코드

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