ezhoon

Stack 주요 기능 정리 본문

Java/이론 및 사용방법

Stack 주요 기능 정리

ezhoon 2022. 1. 26. 20:53

Stack이란

구조 중 하나인 Stack은 말 그대로 쌓다 라는 의미를 갖고 있는 자료 구조입니다.

Stack의 가장 큰 특징은 LIFO(Last In First Out) 나중에 들어간 것이 먼저 나온다는 것입니다.

 

 

Stack LIFO

특징 정리

  • 먼저 들어간 자료가 나중에 나온다 LIFO 구조
  • 재귀적 함수를 호출 할 때 주로 사용
  • 그래프의 깊이 우선 탐색(DFS)에서 사용

Stack 사용법

  • Stack 선언 구문
import java.util.Stack;

 

Stack 값 추가

push("값") 메서드를 사용해서 Stack에 원하는 값을 추가합니다.

public static void main(String[] args) {
    Stack<Integer> intStack = new Stack<>(); // int형 Stack
    Stack<String> stringStack = new Stack<>(); // String형 Stack

    intStack.push(1);
    intStack.push(2);
    intStack.push(3);

    stringStack.push("A");
    stringStack.push("B");
    stringStack.push("C");

    System.out.println("intStack = " + intStack);
    System.out.println("stringStack = " + stringStack);

}

Stack 값 추가

Stack 값 삭제

Stack에서 값을 제거 할 때는 pop()이라는 메서드를 사용합니다.

하지만 제가 원하는 값을 없애는 게 가장 나중에 추가한 값만 사라진 다는 것을 유의해야 합니다

public static void main(String[] args) {
    Stack<Integer> intStack = new Stack<>(); // int형 Stack
    Stack<String> stringStack = new Stack<>(); // String형 Stack

    intStack.push(1);
    intStack.push(2);
    intStack.push(3);

    intStack.pop(); // 가장 마지막에 들어온 3 삭제

    stringStack.push("A");
    stringStack.push("B");
    stringStack.push("C");

    stringStack.pop(); // 가장 마지막에 들어온 "C" 삭제

    System.out.println("intStack = " + intStack);
    System.out.println("stringStack = " + stringStack);

}

Stack 값 삭제


 

만약 모든 값을 제거 하고 싶다면 clear 메소드를 사용하면 됩니다.

intStack.clear();
stringStack.clear();

Stack 값 전체 삭제

Stack 가장 상단의 값 출력

peek() 메서드를 이용해서 가장 나중에 추가한 값을 찾을 수 있습니다.

public static void main(String[] args) {
        Stack<Integer> intStack = new Stack<>(); // int형 Stack

        intStack.push(1);
        intStack.push(2);
        intStack.push(3);

        System.out.println("intStack = " + intStack.peek());

    }

Stack 상단의 값

Stack 비어있는지 체크

empty() 메서드를 이용해서 비어있는 경우 true 값을 받을 수 있습니다.

public static void main(String[] args) {
    Stack<Integer> intStack = new Stack<>();
    
    // intStack이 비어있는 경우 sout 출력
    if(intStack.empty()) System.out.println("intStack 은 비어있습니다.");

}

 

 

 

 

'Java > 이론 및 사용방법' 카테고리의 다른 글

선택정렬  (0) 2022.02.02
Queue 주요 기능 정리  (0) 2022.01.27
Map - HashMap  (0) 2022.01.23
Set - HashSet, TreeSet, LinkedHashSet  (0) 2022.01.17
EOF이란 무엇인가?  (0) 2022.01.06
Comments