Java - 스택(Stack)

HY SONG·2023년 3월 27일
0

Java

목록 보기
13/15

스택(Stack)이란?

데이터를 순서대로 쌓는 자료 구조

스택의 특징

  • 후입선출(LIFO, Last-In-First-Out) 의 구조
  • 데이터는 하나씩만 넣고 뺄 수 있다
  • 데이터의 입출력 방향이 같다

스택의 장점

  1. 스택에 저장된 데이터를 가져오는 속도가 매우 빠르다
    데이터를 삽입, 삭제하는데 모든 데이터를 순회할 필요가 없기 때문이다
  2. 자바에서는 스택을 기본 자료 구조로 제공

스택의 단점

  1. 스택 오버플로우가 발생할 수 있다
    스택은 한계가 있어서, 요소를 계속해서 푸시하면 스택 오버플로우(Stack Overflow) 오류가 발생할 수 있다
  2. 메모리를 관리하는데 부담이 될 수 있다
    스택에 데이터를 저장하는 동안 메모리를 사용하게 되며, 스택 오버플로우를 방지하기 위해 충분한 메모리를 확보해야 한다

주요 메서드

  • push(element)
    스택에 요소를 추가한다
  • pop()
    스택에서 가장 위에 있는 요소를 제거하고 반환한다
  • peek()
    스택에서 가장 위에 있는 요소를 반환하지만 제거하지는 않는다
  • isEmpty()
    스택이 비어 있는지 여부를 확인한다

사용 예시

import java.util.Stack;

public class StackExample {
    public static void main(String[] args) {
        Stack<Integer> stack = new Stack<>();
        
        // push
        stack.push(1);
        stack.push(2);
        stack.push(3);
        
        // pop
        int topElement = stack.pop(); // topElement will be 3
        System.out.println("Popped: " + topElement);
        
        // peek
        int peekedElement = stack.peek(); // peekedElement will be 2
        System.out.println("Peeked: " + peekedElement);
        
        // isEmpty
        boolean isEmpty = stack.isEmpty(); // isEmpty will be false
        System.out.println("Is empty: " + isEmpty);
    }
}

0개의 댓글