Last In First Out
자료구조인데, Vector를 상속받았기 때문에 인덱스 기반으로 요소에 접근하거나 추가할 수 있다.LIFO
자료구조의 특성을 깨뜨릴 수 있다. Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);
stack.add(1,3); // 인덱스에 요소 추가
stack.get(0); // 인덱스 기반으로 접근
LIFO
구조로 출력되지 않는다.LIFO
구조를 필요로 할 때인데, Stack의 Iterator를 사용하면 FIFO
구조처럼 출력된다. Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);
Iterator<Integer> iter = stack.iterator();
while (iter.hasNext()) {
System.out.println(iter.next());
}
[출력 결과]
1 // 먼저 입력한 요소가 먼저 나옴
2
초기 용량을 설정할 수 없다.
LIFO
구조를 유지한다. ArrayDeque<Integer> stack = new ArrayDeque<>();
stack.push(1);
stack.push(2);
stack.push(3);
Iterator<Integer> iter = stack.iterator();
while (iter.hasNext()) {
System.out.println(iter.next());
}
[출력 결과]
3
2
1
초기값을 설정할 수 있다.
모든 메소드에 동기화를 적용하지 않는다.