Stack 대신 Deque를 사용하는 이유 #16
Replies: 2 comments
-
자바의 자료구조에서 Stack 대신 Deque를 사용하는 이유를 설명하세요.자바 공식 문서에서는 Stack 클래스에 대해서, Stack 클래스를 사용하기 보다는 Deque 인터페이스와 그 구현체를 사용하라고 말한다. Queue는 FIFO(선입선출)의 특징을 가지고 있는 자료구조이다. 자바에서는 Queue는 보통 구현체로 LinkedList를 사용한다. Stack은 LIFO(후입선출)의 특징을 가지고 있는 자료구조이다. 자바에서는 Stack은 그 자체로 구현체이므로 다음과 같이 사용한다. Deque는 Double Ended Queue의 약자로, 흔히 양방향 큐라고 불리는 것이다. 자바에서는 Stack 클래스는 앞서 말했듯이 Vector 클래스를 상속하여 구현되어 있다. Vector 클래스는 List를 구현한 클래스로 자바 1.0부터 제공되어 왔다. 하지만 성능 상의 문제로 사용이 권장되지 않고 있다. 결과적으로 Stack 클래스도 사용이 권장되지 않게 된 것이다. Stack과 ArrayDeque의 관계는 Vector와 ArrayList의 관계와 매우 유사하다. 다시 말해 Stack을 사용하면 안되는 이유는 Vector를 사용하면 안되는 이유와 동일하다고 볼 수 있다. 이러한 문제는 외부 동기화를 통해 해결할 수 있다. 위 예시와 같이 동기화 처리를 외부에서 해주면 Deque를 멀티 쓰레드 환경에서도 안전하게 사용할 수 있다. 요약
|
Beta Was this translation helpful? Give feedback.
-
자바의 자료구조에서 Stack 대신 Deque를 사용하는 이유를 설명하세요.stack클래스는 오래된 클래스로 설계되어 성능과 설계 측면에서 비효율적이라고 한다. stack은 vector클래스를 상속받아 모든 메서드가 동기화 되어 있다. 혼자 프로그램을 사용하는 단일 스레드 환경에서까지 동기화가 일어나면 불필요한 성능 저하가 발생할 수 있기 때문에 보통 deque를 사용한다. ArrayDeque는 스택과 큐 기능을 모두 지원하며, stack처럼 불필요환 동기화를 하지 않기 때문에 성능이 더 우수하다. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
📆 일자: 26년 7월 21일(화)
오늘의 질문
자바의 자료구조에서 Stack 대신 Deque를 사용하는 이유를 설명하세요.
Beta Was this translation helpful? Give feedback.
All reactions