TreeMap은 Java의 java.util 패키지에 포함된 Map 인터페이스로 키를 자동으로 정렬된 상태로 유지하는 이진 검색 트리 기반이다.
| 메서드 | 설명 |
|---|---|
put(K key, V value) | 값 추가 |
get(Object key) | 키에 해당하는 값 반환 |
remove(Object key) | 키에 해당하는 항목 제거 |
firstKey() | 가장 작은 키 반환 |
lastKey() | 가장 큰 키 반환 |
higherKey(K key) | 주어진 키보다 큰 키 중 가장 작은 키 |
lowerKey(K key) | 주어진 키보다 작은 키 중 가장 큰 키 |
subMap(K fromKey, K toKey) | 범위 내 키-값 쌍 반환 (fromKey 포함, toKey 제외) |
import java.util.*;
public class TreeMapExample {
public static void main(String[] args) {
TreeMap<String, Integer> scores = new TreeMap<>();
scores.put("kendric", 85);
scores.put("sza", 92);
scores.put("scott", 78);
// 키 기준 오름차순 정렬
for (Map.Entry<String, Integer> entry : scores.entrySet()) {
System.out.println(entry.getKey() + " : " + entry.getValue());
}
// 출력 결과:
// sza : 92
// scott : 78
// kendric : 85
}
}
이때 오름차순 정렬이 아닌, 우리가 지정한 기준으로 정렬할 수도 있다.
TreeMap<String, Integer> descMap = new TreeMap<>(Comparator.reverseOrder());
descMap.put("a", 1);
descMap.put("c", 3);
descMap.put("b", 2);
System.out.println(descMap); // 출력: {c=3, b=2, a=1}
| 항목 | HashMap | TreeMap |
|---|---|---|
| 정렬 여부 | 없음 (순서 보장 안 됨) | 키 기준 정렬 |
| 성능 | 더 빠름 (평균 O(1)) | 느림 (O(log n)) |
| null 키 | 1개 허용 | 허용 안 함 |