JAVA · 컬렉션
TreeMap과 TreeSet
정렬된 컬렉션 TreeMap/TreeSet의 Red-Black Tree 기반 동작입니다.
컬렉션중급TreeMapTreeSetRedBlackTree정렬
핵심 설명
정렬된 컬렉션 TreeMap/TreeSet의 Red-Black Tree 기반 동작입니다.
Java code
import java.util.*;
public class TreeCollections {
public static void main(String[] args) {
// TreeMap — 키 기준 자동 정렬 (Red-Black Tree)
TreeMap<String, Integer> scores = new TreeMap<>();
scores.put("Charlie", 85);
scores.put("Alice", 95);
scores.put("Bob", 90);
System.out.println(scores); // {Alice=95, Bob=90, Charlie=85}
// 범위 조회 O(log n)
System.out.println(scores.firstKey()); // Alice
System.out.println(scores.lastKey()); // Charlie
System.out.println(scores.headMap("C")); // {Alice, Bob}
System.out.println(scores.subMap("B", "D")); // {Bob, Charlie}
// 가장 가까운 키
System.out.println(scores.ceilingKey("Bc")); // Bob
System.out.println(scores.floorKey("Bc")); // Bob
// TreeSet — 정렬된 집합
TreeSet<Integer> nums = new TreeSet<>(List.of(5, 1, 8, 3, 7));
System.out.println(nums); // [1, 3, 5, 7, 8]
System.out.println(nums.headSet(5)); // [1, 3]
System.out.println(nums.tailSet(5)); // [5, 7, 8]
// 커스텀 정렬
TreeSet<String> reverse = new TreeSet<>(Comparator.reverseOrder());
reverse.addAll(List.of("A", "C", "B"));
System.out.println(reverse); // [C, B, A]
}
}학습 팁
범위 검색, 정렬된 순회, 최대/최소값 조회가 빈번하면 TreeMap/TreeSet이 적합합니다. 모든 연산이 O(log n)입니다.
주의할 점
TreeMap의 키는 Comparable이거나 Comparator를 제공해야 합니다. 그렇지 않으면 ClassCastException이 발생합니다.
자주 묻는 질문
TreeMap과 TreeSet란 무엇인가요?
정렬된 컬렉션 TreeMap / TreeSet 의 Red-Black Tree 기반 동작입니다.
TreeMap과 TreeSet 학습 시 주의할 점은 무엇인가요?
TreeMap 의 키는 Comparable 이거나 Comparator 를 제공해야 합니다. 그렇지 않으면 ClassCastException 이 발생합니다.
Continue Learning
Java 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.