-
[Java] Stack Queue를 쓰면 안되는 이유(ArrayDeque)Java 2024. 2. 19. 01:05
c++은 그냥 Stack Queue 쓰면 되는데
자바는 Stack Queue가 존재함에도 불구하고 쓰면 안된다
물론 ps 한정 ㅇㅇ
근데 차피 프젝할때도 쓸일이 없으니 그냥 쓰면 안된다고 생각하자
왜냐하면 stack queue 모두 vector를 상속해서 구현하는데
vector는 동기화를 지원하기 때문에
ps를 하는 내 입장에서는 추가적인 오버헤드만 ㅈㄴ 걸리고
시간초과 걸릴 확률만 높여주는
ps 에 있어 최대 단점만 다 가지고 있는 놈들이기 때문이다
즉 모든 메소드에 synchronized가 있기 때문에 단일쓰레드 환경에서는 성능이 떨어짐
하지만 ArrayDeque 는 동기화를 지원하지 않는다
그래서 싱글쓰레드 환경 즉 ps하는 입장에서는 더 빠를 수 밖에 없는거고
deque 특성 상 stack과 queue의 특성을 모두 가지고 있는 자료구조이기 때문에
ArrayDeque를 stack queue 대신 써주면 된다
Deque<Integer> stack = new ArrayDeque<>(); Deque<Integer> queue = new ArrayDeque<>();'Java' 카테고리의 다른 글
[Java] JDBC와 드라이버 (1) 2024.03.03 [Java] hashcode() and equals() (0) 2024.02.19 [Java] BitSet (0) 2024.02.19 [Java] C++ pair 같은 Map.Entry 사용하기 (0) 2024.02.17 [Java] Vector vs ArrayList vs LinkedList (0) 2024.02.06