정렬된 Map
TreeMap
은 키를 기준으로 자동 정렬되는 Map
컬렉션으로, 기본적으로 키의 자연 순서(Natural Ordering) 에 따라 오름차순으로 정렬된 상태를 유지한다. 만약 정렬 기준을 커스터마이징하고자 할 경우, 생성자에 Comparator
를 전달함으로써 사용자 정의 정렬 방식을 적용할 수 있다.
중복 키는 허용되지 않음
TreeMap
은 동일한 키의 중복 저장을 허용하지 않으며, 중복된 키가 입력될 경우 기존 값을 덮어쓴다. 반면, 값(value)은 중복이 가능하므로 동일한 값을 여러 키에 대응시킬 수 있다.
Null 허용 여부
null
처리에 있어서도 제약이 존재한다. 키(key)는 null
을 허용하지 않으며, null
키를 삽입할 경우 NullPointerException
이 발생한다. 반면, 값(value)은 null
을 허용하므로 null
을 값으로 저장하는 것은 가능하다.
성능 측면에서 TreeMap
은 내부적으로 균형 이진 탐색 트리인 Red-Black Tree를 기반으로 동작하며, put()
, get()
, remove()
등의 기본 연산은 평균적으로 O(log n)
의 시간 복잡도를 가진다. 이는 트리의 균형 유지를 위한 회전 및 재정렬 연산이 수반되기 때문
put(K key, V value)
지정된 키에 해당하는 값을 맵에 추가하거나, 이미 존재하는 키일 경우 해당 값을 덮어쓴다.
TreeMap<String, Integer> map = new TreeMap<>();
map.put("apple", 3); // 새 키 추가
map.put("apple", 5); // 기존 키 값 덮어쓰기
get(K key)
지정된 키에 대응되는 값을 반환한다. 키가 존재하지 않으면 null
을 반환한다.
int value = map.get("apple"); // 5
remove(K key)
지정된 키와 그에 대응하는 값을 맵에서 제거한다. 해당 키가 존재하지 않으면 아무 작업도 수행하지 않는다.
map.remove("apple"); // "apple" 키와 값 제거