DevBoi

[Java] TreeMap(이진 탐색 트리) 본문

Language/[Java]

[Java] TreeMap(이진 탐색 트리)

HiSmith 2022. 3. 22. 14:13
반응형

이진 트리를 기반으로한 Map 컬렉션이다.

같은 Tree 구조로 이루어진 TreeSet과의 차이점은 TreeSet은 그냥 값만 저장한다면, TreeMap은

키와 값이 저장된 Map Entry를 저장한다는 것이다.

키는 저장과 동시에 자동 오름차순으로 정렬되고 숫자타입을 경우에는 값, 문자열 타입을 경우에는 유니코드로 정렬한다.

 

부모키값과 비교해서 키값이 낮은 것은 왼쪽에 저장하는 식이다.

HashMap보다 성능이 떨어진다. TreeMap은 데이터를 저장할때 즉시 정렬하기에 추가,삭제가 HashMap보다 오래걸린다.

정렬된 상태로 Map을 유지해야하거나, 정렬된 데이터를 조회하는 범위검색이 필요한 경우 TreeMap을 사용하는 것이 좋다.

 

이진트리의 문제점을 보완한 레드블랙트리로 이루어져있다.

데이터가 들어올때 편향적으로 들어오면, 비효율적인 퍼포먼스를 낸다 -> 레드블랙은 부모보다 크면 오른쪽 작으면 왼쪽으로 보내면서

균형을 맞춘다.

 

 

 

정리 : TreeMap은 저장,삭제시에 정렬을 자동으로 맞춰주기 때문에 별도의 추후 정렬은 필요하지 않다.

일반 HashMap보다 저장 삭제시에 느리지만, 항상 정렬된 상태, 혹은 정렬된 상태에서 범위 탐색등을 바로바로 할때 유용하다

반응형

'Language > [Java]' 카테고리의 다른 글

[Java] HashSet  (0) 2022.03.25
[Java] ConcurrentHashMap,HashTable  (0) 2022.03.22
[JAVA] LinkedHashMap  (0) 2022.03.22
[Java] HashMap  (0) 2022.03.22
[Java] 함수형 프로그래밍  (0) 2022.03.16