JAVA/포스팅

자바 컬렉션 프레임워크 TreeMap

짜집퍼박사(짜박) 2023. 11. 19. 00:07

TreeMap은 Java 컬렉션 프레임워크에서 제공하는 클래스 중 하나로, 트리 구조를 기반으로 한 맵(Map)을 구현한 클래스입니다. 이 클래스는 키에 대한 정렬을 유지하며, 이진 검색 트리(binary search tree)로 내부적으로 구현되어 있습니다.

 

1. TreeMap의 특징

- 정렬된 키: TreeMap은 키를 기반으로 정렬된 순서를 유지합니다. 따라서 키의 정렬이 필요한 경우에 유용하게 사용할 수 있습니다.
- 동기화 지원 안 함: TreeMap은 동기화를 지원하지 않습니다. 따라서 멀티스레드 환경에서 사용할 경우 추가적인 동기화가 필요합니다.
- Null 불허용: TreeMap은 키에 null을 허용하지 않습니다. 값은 null이 될 수 있습니다.
- 검색 및 범위 질의: TreeMap은 트리 구조를 기반으로 하기 때문에, 특정 범위의 키를 검색하거나 범위 질의(range query)가 빠릅니다.

 

2, TreeMap의 주요 메서드

- put(K key, V value): 지정된 키와 값으로 맵에 쌍을 추가합니다.
- get(Object key): 지정된 키에 매핑된 값을 반환합니다.
- remove(Object key): 지정된 키에 매핑된 값을 제거합니다.
- containsKey(Object key): 지정된 키가 맵에 포함되어 있는지 확인합니다.
- containsValue(Object value): 지정된 값이 맵에 포함되어 있는지 확인합니다.
- size(): 맵에 포함된 키-값 쌍의 개수를 반환합니다.
- clear(): 맵에서 모든 키-값 쌍을 제거합니다.
- firstKey(): 맵에서 가장 작은 키를 반환합니다.
- lastKey(): 맵에서 가장 큰 키를 반환합니다.
- ceilingKey(K key): 주어진 키 이상인 키 중 가장 작은 키를 반환합니다.
- floorKey(K key): 주어진 키 이하인 키 중 가장 큰 키를 반환합니다.

 

TreeMap 사용 예제

import java.util.TreeMap;
import java.util.Map;

public class TreeMapExample {
    public static void main(String[] args) {
        // TreeMap 생성
        Map<String, Integer> treeMap = new TreeMap<>();

        // 요소 추가
        treeMap.put("One", 1);
        treeMap.put("Three", 3);
        treeMap.put("Five", 5);
        treeMap.put("Two", 2);
        treeMap.put("Four", 4);

        System.out.println("TreeMap: " + treeMap);

        // 요소 조회
        System.out.println("Value for key 'Three': " + treeMap.get("Three"));

        // 요소 제거
        treeMap.remove("Five");

        System.out.println("After removing 'Five': " + treeMap);

        // 특정 키가 포함되어 있는지 확인
        System.out.println("Contains key 'Two'? " + treeMap.containsKey("Two"));

        // 특정 값이 포함되어 있는지 확인
        System.out.println("Contains value 4? " + treeMap.containsValue(4));

        // 크기 확인
        System.out.println("Size: " + treeMap.size());

        // 맵에서 가장 작은 키 조회
        System.out.println("First key: " + treeMap.firstKey());

        // 맵에서 가장 큰 키 조회
        System.out.println("Last key: " + treeMap.lastKey());

        // 주어진 키 이상 중 가장 작은 키 조회
        System.out.println("Ceiling key for 'Three': " + treeMap.ceilingKey("Three"));

        // 주어진 키 이하 중 가장 큰 키 조회
        System.out.println("Floor key for 'Three': " + treeMap.floorKey("Three"));
    }
}

위의 예제에서는 TreeMap을 생성하고 여러 메서드를 사용하여 요소를 추가, 제거, 조회, 확인 및 크기를 확인하는 등의 작업을 수행하였습니다. TreeMap은 키의 정렬을 유지하므로, 출력 결과에서 키의 순서가 정렬된 상태로 나타납니다.

 

With ChatGPT