먼저 Stack에 대해서 알아보자.
Last in First out Lifo라고 부른다(후입선출).
무거운 책을 눕혀서 쌓는다고 생각해보자. 차곡차곡 책이 하나씩 쌓일것이고 제일 처음에 들어온 책은 맨 밑에 위치할 것이고 최근에 들어온 책은 가장 위에 위치할 것이다. 책을 빼고싶다면 위에서부터 하나씩 뺄것이다. 이게 Stack이다.
홈페이지를 마구마구 뒤질때 그 전 페이지를 가고싶다면 뒤로가기를 누르면 된다. 가장 최근에 들어간 페이지를 Stack의 최상단에 위치하기 때문에 그것을 불러오면 된다.
자바 공식문서의 Method Summary이다.
Modifier and Type | Method | Description |
---|---|---|
boolean | empty() | stack이 비어있는지 확인한다 |
E | peek() | 스택의 최상단(top)에 위치한 요소를 본다. 제거하지 않고 |
E | pop() | 스택의 최상단에 위치한 요소를 제거하고 반환한다. |
E | push(E item) | 스택의 최상단에 item을 push한다. |
int | search(Object o) | 1-based position을 반환한다. |
1-based index 1부터 시작하는 indexing을 말한다.
package interface_form;
public interface StackInterface <E>{
/**
*
* @param item 스택에 추가된 요소
* @return 추가된 요소
*/
E push(E item);
/**
* 스택의 최상단에 위치한 요소 삭제
* @return 삭제된 요소
*/
E pop();
/**
* 스택의 최상단에 위치한 요소 반환
* @return 요소반환
*/
E peek();
/**
* 스택의 상단으로부터 특정요소가 몇번째에 위치했는지
*
* @param o 찾으려는 요소
* @return 상단으로부터의 위치
*/
/*
* ________
* | a |
* idx 3 |______| search("w")
* | e | --> 상단(idx 3)으로 부터 3번 째에 위치
* idx 2 |______| == return 되는 값 : 3
* | w |
* idx 1 |______|
* | k |
* idx 0 |______|
*
*/
int search(Object o);
/**
* 스택이 비어있는지 확인한다.
* @return 스택이 비어있으면 true , 스택이 비어있지 않으면 false
*/
boolean empty();
/**
* 스택의 크기 반환
* @return 스택의 크기
*/
int size();
/**
* 스택을 비운다.
*/
void clear();
}