Stack?
Stack이란?
"스택을 쌓는다" 라는 표현을 실생활에서도 간간히 사용하기 때문에, 큐와는 다르게 그나마 기억하기가 편한 것 같습니다.
자료구조의 일종으로서 큐(Queue)와는 다르게 후입선출의 형식입니다. - LIFO(Last In First Out)나중에 들어오는 값이 가장 먼저 나가는 것으로,큐와는 다르게 Index의 개념이 존재합니다.
Stack의 선언 방법
Stack<Integer> stack = new Stack<Integer>();
Java
복사
•
Stack<객체> 변수명 = new Stack<객체>();
큐와는 달리 Stack만을 Import하여 사용합니다.
Stack에 값을 추가하는 방법(add와 push의 차이점)
stack.pust(i);
stack.add(i);
Java
복사
•
Stack변수.push(값);
•
Stack변수.add(값);2가지 방법이 있으며, 과정은 비슷하나 결과가 다릅니다.
•
add의 경우 true를 return하고, push는 push한 item을 return합니다.
상황에 따라 다르게 사용할 수 있겠지만, 가시적으로도 Stack을 사용한 것을 명시하기 위해
push를 쓰는 것이 더 명확할 것 같습니다.
•
하지만, add의 경우 index를 주어 특정 위치에 끼워넣는 것이 가능하기 때문에,
요건에 따라 필요에 의해 사용할 수 있습니다.
Stack 값 출력
stack.peek();
Java
복사
•
Stack변수.peek();
이렇게 사용할 경우 현재 Stack의 가장 마지막에 들어간 값, 가장 먼저 출력될 값이 출력되게 됩니다.
큐와 동일하게 Stack이 비어있을 경우 null을 return하기 때문에, 조건식에서도 사용됩니다.
Stack 값 삭제(출력)
stack.pop();
stack.clear();
stack.remove(i);
Java
복사
•
Stack변수.pop();
•
Stack변수.clear();
•
Stack변수.remove(i);
◦
와 같이 사용할 수 있으며, 각각의 차이를 확인해보겠습니다.
▪
clear - Stack을 전체 비움
▪
pop - 튀어나온다는 영어해석처럼 가장 먼저 출력할 대상을 삭제하며, 출력합니다. = 가장 나중에 넣은 값, 가장 끝의 index
▪
remove - remove는 index를 주지 않을 경우 pop과 동일하게 가장 먼저 출력할 대상을 삭제하고, 파라미터로 index를 줄 경우 해당 index에 해당하는 값을 삭제합니다.(해당 값 출력X)
그 외의 Stack 함수
Stack변수.contains(변수); = 해당 변수가 Stack 안에 존재하는 지 검증
Stack변수.empty(); = Stack이 비어있는지 검
Stack변수.firstElement; = 가장 첫번째 index의 값을 출력
Stack변수.indexOf(변수); = 파라미터로 넣은 값의 index를 출력합니다.
Stack변수.get(index); = 파라미터 index에 해당하는 값을 출력합니다.