[TIL][Java][2023-12-04] 컬렉션 List - Stack

2023. 12. 4. 19:35TIL/Java

Stack

 

Stack은 값을 수직으로 쌓아놓고 넣었다가 빼서 조회하는 형식으로 데이터를 관리한다.

"나중에 들어간 것이 가장 먼저 나온다.(Last In First Out)" 라고 표현하며

주로 상자와 비유해서 설명한다.

 

 

  • 특징
    • 상자에 물건을 넣고 빼는 것처럼 밑에서 위로 쌓고, 꺼낼 때는 위에서부터 꺼내는 형식이다.
    • 때문에 넣는 기능(push())과 조회(peek()), 꺼내는(pop()) 기능만 존재한다.
    • 최근 저장된 데이터를 나열하고 싶거나 데이터의 중복 처리를 막고 싶을 때 사용한다.
  • 기능
    • 선언 : Stack<Integer> intStack 의 형태로 선언한다.
    • 생성 : new Stack<Integer>(); 의 형태로 생성한다.
    • 추가 : intStack.push(추가할 값) 의 형태로 값을 추가한다.
    • 조회 : intStack.peek() 의 형태로 맨 위값을 조회한다.
    • 꺼내기 : intStack.pop() 의 형태로 맨 위값을 꺼낸다.(꺼내고 나면 삭제된다.)

 

 

// Stack 

import java.util.Stack;

public class Main {

	public static void main(String[] args) {
		Stack<Integer> intStack = new Stack<Integer>(); // 선언 및 생성
		
		// 값 추가
        intStack.push(1);
		intStack.push(2);
		intStack.push(3);

		while (!intStack.isEmpty()) { // 다 지워질때까지 출력
		    System.out.println(intStack.pop()); // 3,2,1 출력
		}

		// 다시 추가
		intStack.push(1);
		intStack.push(2);
		intStack.push(3);
		
		// peek()
		System.out.println(intStack.peek()); // 3 출력
		System.out.println(intStack.size()); // 3 출력 (peek() 할때 삭제 안됐음)
		
		// pop()
		System.out.println(intStack.pop()); // 3 출력
		System.out.println(intStack.size()); // 2 출력 (pop() 할때 삭제 됐음)		
		
		System.out.println(intStack.pop()); // 2 출력
		System.out.println(intStack.size()); // 1 출력 (pop() 할때 삭제 됐음)		

		while (!intStack.isEmpty()) { // 다 지워질때까지 출력
		    System.out.println(intStack.pop()); // 1 출력 (마지막 남은 값 하나)
		}
	}
}