JAVA

[JAVA] Stack / Deque

집한구석 2021. 7. 16. 22:01
728x90

Stack 

  • 리스트의 한쪽 끝으로만 자료 삽입, 삭제 작업이 이루어지는 자료구조를 구현한 클래스
  • Vector를 상속받은 스택메모리 구조의 클래스를 제공 (Vector 동기화선언이되어 

Deque

  • Queue 인터페이스를 확장한 인터페이스 
  • 자료의 입출력을 양쪽 끝에서 할 수 있음
  • 인덱스로 요소에 액세스, 삽입, 제거를 허용안 함

Stack / Deque 비교

  • Deque는 인터페이스로 구현해야 하기 때문에 객체지향설계 관점에서 Stack보다 더 낳은 유연성을 제공
  • Stack은 Vector로 상속받아서 구현한 클래스라 동기화되기 때문에 단일쓰레드 환경에서는 성능적 이슈가 발생할 수가 있음
  • Deque의 경우 멀티쓰레드 같은 경우 동기화 이슈가 발생할 수 있지만 ArrayDeque에 대한 동기화 데코레이터를 구현할 수 있음

요약

  • 공식 문서에서 LIFO 스택 구현 같은경우 Deque인터페이스로 사용해서 구현하라고 하니, Deque 사용