알고리즘/java

<java> stack 대신 deque

잼추 2024. 6. 6. 03:17

stack?

"쌓다"라는 의미로 데이터를 하나씩 쌓아 올린 형태의 자료 구조,

한쪽 끝에서만 자료를 넣고 뺄수 있는 후입선출 LIFO(Last in First Out) 형식의 자료구조 이다.

 

stack을 지양하는 이유

 

1. interface의 유연성

java에서는 다중상속을 지원하지 않으며

stack은 클래스 이므로 확장이 불가능 하다

 

반면 deque은 인터페이스 이다.

인터페이스는 클래스 상속보다 더욱 유연하기 때문에

이미 상속을 받은 클래스 더라도

인터페이스를 구현할 수 잇다.

 

→ 인터페이스인 deque이 클래스인 stack 보다 객체지향관점에서 더욱 많은 유연성을 지원

 

2. 동기화 메소드 및 성능

Vector.class를 상속하여 사용

→  thread safety 를 위한 전통적인 방법이며 단점 발생

(thread safety: 멀티스레드 프로그래밍에서 일반적으로 어떤 함수나 변수, 혹은 객체가 여러 스레드로 부터 동시에 접근이 이루어져도 프로그램의 실행에 문제가 없는것)

  • 모든 작업에서 lock이 걸려 성능 저하 발생
  • 단일 스레드 작업시 성능 저하

 

3. 인덱스 접근

index로 접근하여 추가, 삭제, 검색 가능

후입선출 규칙 위반

 

 

'알고리즘 > java' 카테고리의 다른 글

<java> 이분탐색 사용  (0) 2024.06.08
<java> hashCode  (0) 2024.06.07
<java> ArrayDeque vs LinkedList  (1) 2024.06.06
<java> 세그먼트 트리 segment tree  (0) 2024.06.04
<java> map 의 사용  (0) 2024.06.01