후입 선출(LIFO): 나중에 들어간 값이 먼저 나오는 자료구조를 구현한 자바 클래스
Stack의 다음과 같은 단점 때문에 Stack 대신 Deque의 구현체인 ArrayDeque 사용을 제안하고 있다 Java에서 vetor는 특정 상황에서 효율적이지 않기 때문에 Thread Safe 않다고 할 수 있다.
Vector를 상속받은 Stack은 다음과 같은 단점이 존재
선입 선출(FIFO): 먼저 들어간 값이 먼저 나오는 자료구조를 구현한 자바 인터페이스
자료의 입출력을 양 끝에서 할 수 있는 자바 인터페이스
public class Application {
public static void main(String[] args) {
Deque<String> deque = new ArrayDeque<>();
deque.addFirst("첫 번째 요소"); // "첫 번째 요소"
deque.add("두 번째 요소"); // "첫 번째 요소", "두 번째 요소"
deque.push("세 번째 요소"); // "세 번째 요소", "첫 번째 요소", "두 번째 요소"
System.out.println(deque.pop());
System.out.println(deque.pop());
}
}
// 실행 결과
// > Task :Application.main()
// 세 번째 요소
// 첫 번째 요소
일반적으로 Deque의 구현체는 ArrayDeque와 LinkedList가 있다
둘의 차이점으로는 아래와 같다
ArrayDeque
LinkedList
대부분의 상황에서는 Deque를 사용할 때 ArrayDeque를 사용한다
참고