본문 바로가기

Language/Java

[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);

 

'Language > Java' 카테고리의 다른 글

[Java] 배열을 정렬해보겠습니다.  (0) 2023.09.13
[Java] Queue 인터페이스  (0) 2023.07.05
[Java] Set 인터페이스  (0) 2023.05.15
[Java] List<E> 인터페이스  (0) 2023.05.15
[Java] Map 인터페이스  (0) 2023.05.15