Stack이란?
Stack 사전에서는 '쌓다', '더미'라 말한다.
즉 상자에 물건을 쌓아 올리듯이 데이터를 쌓는 자료 구조라고 할 수 있다.
스택은 마지막에 저장한 데이터를 가장 먼저 꺼내게 되는 구조 특징이 있다.
이런 자료 구조를 LIFO(Last In First Out) 구조라 한다.
함께 많이 사용되는 Queue(큐)의 경우 먼저 추가된 데이터가 먼저 나오는
FIFO(First In First Out) 동작을 갖는 것과 비교한다.
기본 스택 구조로 예시를 들면 탄창을 들 수 있다.
마지막에 넣은 탄알이 가장 먼저 발사되고, 맨 처음에 넣은 탄환이 마지막에 발사되는 걸 예시로 들 수 있다.
Stack 사용법
자바는 java.util.Stack 클래스로 Stack을 사용할 수 있다.
일반적으로 스택 데이터를 추가하는 방법은 push를 사용하고
데이터를 제거하는 방법은 pop이라고 한다.
import java.util.Stack;
메서드 | 반환값 | 설명 |
empty() | boolean | Stack이 비어있는지 알려준다 |
peek() | Object | Stack의 맨 위에 저장된 객체를 반환 pop과 달리 Stack에서 객체를 꺼내지 않는다. 비어있을 경우 EmptyStackException이 발생한다. |
pop() | Object | Stack의 맨 위에 저장된 객체를 꺼낸다. 비어있을 경우 EmptyStackException이 발생한다. |
push(Object item) | Object | Stack에 객체(item)를 저장한다. |
search(Object o) | int | Stack에서 주어진 객체(o)를 찾아서 그 위치를 반환한다. 못 찾는 다면 -1을 반환한다. 배열과 달리 위치는 0이 아닌 1부터 시작한다. |
Stack 값 추가하기
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);
stack.push(3);
System.out.println(stack);
Stack 값 제거
//시작 [1,2,3]
stack.pop()
//실행 후 [1,2]
stack.pop()
//실행 후 [1]
Stack 마지막 값 확인하기
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);
stack.peek; //마지막 저장된 2 출력
Stack 공백 확인
Stack<Integer> stack = new Stack<>();
stack.isEmpty(); // true
Stack 사이즈 확인
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);
stack.push(3);
stack.size(); // 3
size()로 확인 가능한 것은 Vector 클래스를 상속받아 가능하다.
Vector 클래스는 List 인터페이스를 구현할 수 있는 클래스로 size() 메서드를 사용할 수 있다.
728x90
'추가 공부 > Java' 카테고리의 다른 글
[Java] Garbage Collection(GC) (3) | 2024.11.12 |
---|---|
[Java] Final keyword (2) | 2024.11.10 |
[JAVA] Generic (1) | 2024.11.09 |
[Java] Collection Framework (0) | 2024.11.07 |