자바에서 지원하는 자료구조로
배열리스트, 연결리스트, 세트와 해쉬맵에 대해 알아봤다.
자바는 이 외에도 다른 자료 구조를 지원하는데
Stack과 Queue, 그리고 Deque에 대해 알아보고 어떻게 사용하면 좋을지 들여다보자.

스택은 후입선출(LIFO)의 성격을 가지는 자료 구조이다.
스택 영역의 스택이 바로 후입선출의 스택이다.
Stack<String> names = new Stack<>();
자바에서는 Stack 자료 구조를 지원하는데, 내부에 Vector라는 자료 구조를 사용한다.
현재는 호환을 위해서만 남아있으니 사용하지 말자.
Stack 대신에 Deque를 사용해야 한다.

Stack과는 달리 선입 선출(FIFO)의 특징을 가지는 자료 구조이다.
탑을 쌓고 해체하는 구조가 필요하다면 stack을,
줄을 서서 앞부터 차례대로 처리하는 구조를 원한다면 Queue를 활용하자.

Deque(Double Ended Queue)는 Queue와 Stack의 특성을 합친 자료 구조이다.
자료 구조의 양쪽 끝에서 데이터를 조작할 수 있어,
Queue와 Stack 모두 유연하게 원하는 방식대로 사용할 수 있다.
자바에서는 Deque의 구현체로 ArrayDeque를 지원한다.
LinkedList도 지원하지만 ArrayDeque가 성능이 우월하다.
ArrayDeque<String> names = new ArrayDeque<>();
names.addFirst("홍길동");
names.addLast("홍길순");
names.pollFirst();
names.pollLast();
메서드를 활용하여 자료 구조의 양쪽 끝에서 데이터를 조작할 수 있다.

배열리스트, 연결리스트, 세트, 해쉬맵에 이어 Stack, Queue, Deque에 대해 알아봤다.
리스트, 세트, 맵과는 달리 Stack, Queue, Deque 세 자료구조는 선형 자료 구조로
양쪽 끝에서 데이터 처리가 빈번하게 일어나는 경우 사용을 고려해야 한다.
자바에서 지원하는 다양한 자료구조를 이해하고, 적절하게 사용할 수 있도록 준비하자.