본문 바로가기
카테고리 없음

자바 TreeMap 사용법 & 예제 총정리

by sftt 2023. 12. 26.

자바 TreeMap 사용법 & 예제 총정리

TreeMap이란?

TreeMap은 자바 컬렉션 프레임워크의 하나로, Key와 Value가 한 쌍으로 이루어져 있으며, Key에 기반하여 정렬된 순서로 저장하는 자료구조입니다. 이때 Key는 중복될 수 없습니다. TreeMap은 Red-Black Tree라는 자료구조를 기반으로 구현되어 있으며, 이진 검색 트리의 일종입니다.

TreeMap 사용법

TreeMap을 사용하기 위해서는 먼저 java.util 패키지를 import해야 합니다.

import java.util.TreeMap;

TreeMap은 기본적으로 오름차순으로 정렬되기 때문에, Key의 클래스가 Comparable 인터페이스를 구현하고 있어야 합니다. 만약 Key 클래스가 Comparable 인터페이스를 구현하고 있지 않거나, 다른 정렬 기준으로 TreeMap을 사용하고 싶다면 Comparator를 따로 구현해야 합니다.

TreeMap 인스턴스 생성

TreeMap<KeyType, ValueType> treeMap = new TreeMap<>();

위의 코드는 Key 클래스와 Value 클래스를 타입 파라미터로 받는 TreeMap 인스턴스를 생성합니다. KeyType은 Key의 자료형을, ValueType은 Value의 자료형을 나타내는데, 이를 실제로 사용할 때에는 각각에 대응하는 자료형을 사용해야 합니다.

TreeMap에 요소 추가

treeMap.put(key, value);

위의 코드는 Key와 Value를 쌍으로 가지는 요소를 TreeMap에 추가하는 메소드입니다. Key는 중복될 수 없으며, 이미 Key가 존재하는 경우에는 해당 Value를 업데이트합니다.

TreeMap에서 요소 삭제

treeMap.remove(key);

위의 코드는 Key에 해당하는 요소를 TreeMap에서 삭제하는 메소드입니다.

TreeMap 요소 접근

value = treeMap.get(key);

위의 코드는 Key에 해당하는 요소의 Value를 반환하는 메소드입니다. Key가 존재하지 않는 경우에는 null을 반환합니다.

TreeMap 순회

TreeMap은 Key에 기반하여 정렬된 순서로 요소를 저장하기 때문에, 순서대로 접근하여 작업을 수행할 수 있습니다. 아래는 TreeMap을 순회하는 예제입니다.

for (Map.Entry<KeyType, ValueType> entry : treeMap.entrySet()) {
    KeyType key = entry.getKey();
    ValueType value = entry.getValue();
    // 요소에 대한 작업 수행
}

TreeMap 예제

예제 1: TreeMap에 요소 추가 및 접근

import java.util.TreeMap;

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

        treeMap.put("apple", 1500);
        treeMap.put("banana", 2000);
        treeMap.put("orange", 1000);

        System.out.println(treeMap.get("banana")); // 출력: 2000
    }
}

위의 예제는 과일 이름을 Key로 하고, 가격을 Value로 하는 TreeMap을 생성하고, 각각의 요소를 추가한 후, Key를 이용하여 가격을 출력하는 예제입니다.

예제 2: TreeMap에서 최댓값 및 최솟값 찾기

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

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

        treeMap.put(3, "apple");
        treeMap.put(1, "banana");
        treeMap.put(2, "orange");

        Map.Entry<Integer, String> firstEntry = treeMap.firstEntry();
        System.out.println(firstEntry.getKey() + " : " + firstEntry.getValue()); // 출력: 1 : banana

        Map.Entry<Integer, String> lastEntry = treeMap.lastEntry();
        System.out.println(lastEntry.getKey() + " : " + lastEntry.getValue()); // 출력: 3 : apple
    }
}

위의 예제는 TreeMap에 정수를 Key로 하고, 과일 이름을 Value로 하는 TreeMap을 생성하고, 각각의 요소를 추가한 후, 최댓값과 최솟값을 찾아서 출력하는 예제입니다.

결론

TreeMap은 Key 기반으로 정렬하여 요소를 저장하는 자료구조로, Key가 중복될 수 없고 정렬된 순서대로 요소에 접근할 수 있습니다. 본 포스팅에서는 TreeMap의 사용법과 간단한 예제를 소개하였습니다. TreeMap을 적절히 활용하면 데이터를 정렬하고 탐색하기에 유용한 자료구조를 구현할 수 있습니다.

댓글