Stack
- 데이터를 순서대로 쌓는 구조임
- 입력과 출력이 하나의 방향으로 이루어지는 제한적 접근
- LIFO(last in first out), FILO(first in last out)
- 데이터 넣기(push), 데이터 꺼내기(pop)
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
----------------------------------------------
1제일 먼저 들어가고 4번이 마지막으로 들어감
스택이 빌 때까지 데이터를 빼낸다.
stack.pop();
stack.pop();
stack.pop();
stack.pop();
마지막부터 차례로 나오게 된다.
비어있는지 확인
stack.empty();
장점
- 후입선출의 구조를 가지기 때문에 저장된 데이터를 가져오는 속도가 매우 빠르다.
- 데이터를 삭제하거나 삽입시 모든 데이터를 순회할 필요가 없기 때문에 빠르다.
- 자바는 스택을 기본 자료구조로 제공, 별도의 라이브러리나 모듈 설치가 필요 없다
단점
- 크기 제한이 없다
- 크기가 제한되지 않기때문에 메모리 사용량이 불필요하게 증가할 수 있다.
- 크기를 정하거나, 동적으로 크기를 조절하는 방법을 쓴다.
- Vector 클래스를 상속받아 구현되어있어 크기를 동적으로 조정하지 않는다.
- Vector 클래스에는 중간에 데이터를 삽입, 삭제할 수 있어서 사용에 주의가 필요하다.
사용
- 브라우저의 뒤로가기 앞으로 가기 기능을 구현할 때 사용
- 새로운 페이지에 접속할 때 현재페이지를 Prev Stack에 보관
- 뒤로가기 할때ㅐ는 현재 페이지를 Next Stack에 보관하고 Prev Stack에 가장 나중에 보관된 페이지를 현재 페이지로 가져옴