남극
Java Stack 본문
Stack
우선 stack이 무엇이냐 하면 사전적 정의로는 쌓아 올린다는 뜻을 가지고 있습니다. 한 방향에서 쌓아 올리는 형태의 자료구조를 뜻합니다.
사진을 보시면 첫 번째 값은 가장 마지막에 저장되어 있는 것을 보실 수 있습니다. 위에 쓰여있듯이 후입 선출의 구조를 가지고 있습니다. 해석하자면 마지막에 들어온 값이 가장 먼저 나간다는 뜻입니다. 가장 먼저 들어온 것이 가장 마지막에 나간다고 보실 수도 있습니다. 이것을 간단하게 LIFO(Last-In-Last-Out)라고 칭합니다. 스택에는 TOP이라는 개념이 있습니다. 이 top이라는 곳으로만 데이터에 접근하도록 제한하는 것입니다. 다른 곳으로는 데이터가 들어오지 않도록 말입니다.
Stack 클래스의 계산
push | 스택의 탑에 아이템을 삽입 |
pop | 스택의 탑에 있는 아이탬 하나를 삭제 |
empty | 스택이 비었는지 검사 후 true나 false를 반환 |
peek | 스택의 탑에 있는 객체를 탐색 |
search | 대입한 인자 값에 대응하는 스택의 위치를 반환, 시작의 위치는 top을 기준으로 1부터 시작 |
위에 있는 메서드를 한 번 모두 시험해보도록 하겠습니다. 궁금해서 그냥 다 해보았습니다.
public class StackTest {
public static void main(String[] args) {
Stack<Object> st = new Stack<Object>();
st.push("one");
st.push("two");
st.push("three");
st.push("four");
st.push("five");
System.out.println("push : " + st);
st.pop();
System.out.println("pop : " + st);
System.out.println("peek : " + st.peek());
System.out.println("search : " + st.search("four"));
System.out.println("empty : " + st.empty());
st.pop();
st.pop();
st.pop();
st.pop();
System.out.println("empty : " + st.empty());
}
}
result
push : [one, two, three, four, five]
pop : [one, two, three, four]
peek : four
search : 1
empty : false
empty : true
하나하나 실험을 해봤습니다. 위에 있는 결과를 보시면 push 한 것을 출력하면 들어간 순서대로 값이 나옵니다. 위에 있는 그림에서 검은색 숫자의 순서대로 나오는 것을 보실 수 있습니다. 하지만 pop은 흰색 숫자의 순서대로 삭제되는 것을 보실 수 있습니다. push 한 것을 출력하는 것은 순서 자체는 리스트처럼 들어가지만 값을 추출할 때 흰색 숫자의 순서대로 나옵니다. 나머지 메서드들은 한번 사용해보시면서 이해하는 것이 빠를 것이라고 생각됩니다.
생활 속 예시
우리가 사용하는 뒤로 가기 버튼과 앞으로 가기 버튼을 눌렀을 때 이전에 사용하던 페이지로 가는 것이 있고 문자열을 입력하고 역으로 출력할 때 등 사용할 수 있는 개념입니다. 상당히 일상생활에서도 쓰이는 모습을 보실 수 있습니다.
'JAVA > Data Structure' 카테고리의 다른 글
Java Generics (0) | 2020.03.08 |
---|---|
JAVA Queue (0) | 2020.03.08 |
Iterator - Java (0) | 2020.02.26 |
ArrayList와 Vector의 차이점 in Java (0) | 2020.02.19 |
JAVA - 자료구조 Collection Framework (0) | 2020.01.05 |