TreeMap의 주요 특징

  1. 정렬된 Map

    TreeMap은 키를 기준으로 자동 정렬되는 Map 컬렉션으로, 기본적으로 키의 자연 순서(Natural Ordering) 에 따라 오름차순으로 정렬된 상태를 유지한다. 만약 정렬 기준을 커스터마이징하고자 할 경우, 생성자에 Comparator를 전달함으로써 사용자 정의 정렬 방식을 적용할 수 있다.

  2. 중복 키는 허용되지 않음

    TreeMap은 동일한 키의 중복 저장을 허용하지 않으며, 중복된 키가 입력될 경우 기존 값을 덮어쓴다. 반면, 값(value)은 중복이 가능하므로 동일한 값을 여러 키에 대응시킬 수 있다.

  3. 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" 키와 값 제거