[Java] Stack 클래스
Stack 자료구조
(추후 블로깅 예정)
Stack class 사용법
Stack 선언
Stack 클래스는 Vector 클래스를 상속받는다. (당연히 vector 클래스의 메소드를 사용할 수 있다.)
Stack 생성 시 제네릭 부분에는 사용할 객체를 담으며 되며 생성되면 어떤 원소도 포함하지 않는다.
import java.util.Stack;
public class Stack<E> extends Vector<E>
Stack<Integer> stack = new Stack<>(); //Integer 스택 선언
Stack 값 추가
public E push(E item)
stack은 LIFO 구조이기 때문에 다음과 같이 stack에 쌓이게 된다.
Integer element1 = stack.push(1); //element1 == 1
Integer element2 = stack.push(2); //element2 == 2
Integer element3 = stack.push(3); //element3 == 3
Stack 최상단 값 출력
public E peek()
peek은 "몰래 엿보다"라는 뜻을 갖고 있다. 스택을 위에서 바라보았을 때 어떤 값이 보이겠는가? 당연히 스택의 top이 보인다. "몰래" 엿보다이기 때문에 어떠한 처리도 하지 않고, 스택의 top 즉 가장 상단의 값을 출력한다.
Integer top = stack.peek(); //top == 3
Stack 최상단 값 제거
스택은 LIFO의 구조로 제거 시 가장 마지막에 들어온 top을 제거한다. pop() 메서드는 top을 출력할 뿐만 아니라 제거해준다.
public E pop() : 값 한 개 제거
.
Integer element = stack.pop(); //element = 3
public void clear() : 전체 값 제거 (초기화)
vector 클래스에서 상속받은 메서드로, stack에 들어있는 전체값을 제거 즉 초기화한다.
stack.clear();
Stack 클래스에서 주로 사용하는 기타 메서드
public boolean empty() : 스택이 비었는지 확인
stack이 비어있다면 true, 그렇지 않다면 false를 리턴한다.
boolean isEmpty = stack.empty();
public int size() : 스택의 구성요소의 개수 리턴
int numbers = stack.size();
public boolean contains(Object o) : 특정 원소를 갖고 있는지 확인
vector 클래스에서 상속받은 메소드로, 스택이 특정 원소를 갖고 있다면 true 그렇지 않다면 false를 리턴한다.
boolean isContained = stack.contains(0);