Java Stack, Queue 그리고 ArrayDeque

U_Uracil·2023년 8월 4일
0

지식정리

목록 보기
3/5

Java에서의 Stack은 Class이고 Queue는 Interface이다.

Stack을 들여다보면 Vector를 상속하여 만들어졌다.
그렇기 때문에 무늬만 Stack이지 실제로는 LIFO가 유지되지 않고 중간 인덱스 삽입, 삭제 전부 가능하다.
그리고 메서드가 synchronized하게 만들어져 속도도 느리다.

위에 적힌 문제때문에 Stack을 구현하려면 Deque를 사용하라고 적혀있다.

위에서 언급했듯이 Queue는 Interface여서 구현체가 필요한데 나는 지금까지 Queue의 구현체는 LinkedList밖에 없는 줄 알았다.
그런데 ArrayDeque도 Queue를 구현할 수 있다는 점을 알게 되었다. 거기다 대부분의 상황에서 LinkedList보다 훨씬 성능이 우수하다고 한다.

지금까지 LinkedList로만 Queue를 구현했는데 앞으로는 ArrayDeque를 사용해서 Stack과 Queue를 구현해야겠다.

참고
https://tecoble.techcourse.co.kr/post/2021-05-10-stack-vs-deque/
https://velog.io/@djawnstj/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-Java%EC%9D%98-LinkedList%EC%99%80-ArrayDeque

profile
기억은 유한, 기록은 무한

1개의 댓글

comment-user-thumbnail
2023년 8월 4일

글 재미있게 봤습니다.

답글 달기