java 에서 stack이란?
대부분의 java를 접해본 사람이라면 ArrayList를 알고 있을 것이다.
stack은 이러한 ArrayList처럼 데이터를 저장하는 하나의 collection이다.
stack의 구조를 예로 들자면 프링글스 통에 프링글스 과자를 하나씩 쌓아 담는 것과 동일하다.
가장 먼저 들어간 과자가 가장 아래에 깔려있고 점차 쌓이는 구조이며, 꺼낼때는 가장 최근에 넣었던 과자를 가장 먼저 가져오는 형태의 collection이다.
이러한 구조를 First in Last out(FILO) 라고 말하며, Queue가 가진 First in First out(FIFO) 형태와 반대의 개념이다.
그림으로 보면 더 쉽다.
출처 : 코딩팩토리
그림에서 보면 한 스텍에 Push()를 하여 값 3번입력하고 pop으로 값을 지우자, 맨 마지막에 입력되었던 45가 제거된 것을 볼 수 있다.
import java.util.*;
public class prac {
public static void main(String[] args) {
Stack st = new Stack();
System.out.println(st);
st.push(1);
st.push(2);
st.push(3);
System.out.println("st 전체 : "+st);
st.add(2, 100);
System.out.println("st 전체 : "+st);
System.out.println("st에 3이 포함 되어 있는지 : "+st.contains(3));
System.out.println("st 2번인덱스 값 : "+st.get(2));
System.out.println("st 3의 인덱스 : "+st.indexOf(3));
System.out.println("st 전체크기 : "+st.size());
System.out.println("st 마지막요소 : "+st.peek());
System.out.println("st 전체 : "+st);
System.out.println("마지막요소 제거 및 출력"+st.pop());
System.out.println("st 전체 : "+st);
}
}
stack의 주요 메소드 이다.
stack객체 이름을 그냥 출력하면 stack내부에 있는 데이터가 모두 출력된다.
그냥 이렇게 봐서는 매우 간단해 보인다.
실제로 간단하긴 하다. 하지만 여러 collection이 많이 있기 때문에 햇갈리지 않게 백준, 프로그래머스등 여러 예제를 풀어보고 공부해야한다.