PHpullh
학습 라이브러리/Java/TreeMap과 TreeSet

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 메타데이터를 가집니다.