[Java] TreeMap - 정렬 가능한 Map

해니·2024년 10월 29일
0

Java

목록 보기
25/34
post-thumbnail

TreeMap 개념

  • HashMap과 마찬가지로 Map 컬렉션 중 하나
  • 이진탐색트리의 문제점을 보완한 균형이진탐색 트리 중 하나인
    레드-블랙 트리(Red-Black-Tree)로 구현되어 있다.
  • 일반 Map 보다 데이터 추가, 삭제에는 시간이 오래 걸리지만 정렬되어 저장된다는 점 때문에 조회가 빠르다.
  • 기본적으로 Key값을 기준으로 오름차순으로 정렬된다.
  • 정렬 방법을 설정하려면 생성자의 매개변수로 Comparator 클래스를 구현하여 넣어주어야 한다.

같은 Tree 구조로 이루어진 TreeSet과 차이점은 TreeMapMap.entry()를 저장한다는 점이다. 🌳

레드-블랙 트리(Red-Black Tree)에 대한 설명은 -> https://velog.io/@yuhaeni/Java-TreeSet



TreeMap 생성

  • 기본 정렬 방식을 사용 시 default 생성자를 이용한다.
  • 정렬방식을 지정해 주려면 Comparator을 구현하거나, 람다식으로 나타낸다.

default 생성자

// TreeMap의 생성자에 기존의 정렬되지 않은 Map을 넣어주면, 
// 모든 데이터가 정렬되어 TreeMap에 저장된다.
Map<String, Integer> map = new HashMap<>();
TreeMap<String, Integer> treeMap = new TreeMap<>(map);
TreeMap<String, Integer> treeMap = new TreeMap<>(Map.of("kim", 10, "Lee",20,"Park", 30));



Comparator 클래스 구현

TreeMap<Integer, Integer> treeMap = new TreeMap<>(new Comparator<Integer>() {
    @Override
    public int compare(Integer o1, Integer o2) {
        return o2-o1;
    }
});



람다식 이용

TreeMap<Integer, Integer> treeMap = new TreeMap<>((o1, o2) -> o2-o1);



TreeMap 메서드


데이터 추가

treeMap.put(key, value);

데이터 삭제

// key 기준 삭제
treeMap.remove(key);

// 현재 맵에서 가장 작은 키 값(first)의 Entry를 반환 후 삭제
treeMap.pollFirstEntry();

// 현재 맵에서 가장 큰 키 값(last)의 Entry를 반환 후 삭제
treeMap.pollLastEntry();

데이터 조회

// 특정 key가 있는지 여부 조회. boolean 값 리턴
treeMap.containsKey(key);

// 특정 key의 value 조회
treeMap.get(key);

// 특정 value가 있는지 여부 조회. 1개 이상의 key가 해당 value를 가지면 true
treeMap.containsValue(value); 


// 최소값 조회. 정렬 기준이 없는 경우 오름차순 정렬이라 최소값 리턴
treeMap.firstKey();

// 최대값 조회. 정렬 기준이 없는 경우 오름차순 정렬이라 최대값 리턴
treeMap.lastKey();

// 최소/최대 키 값의 entry 조회
treeMap.firstEntry(); 
treeMap.lastEntry();

// 부분 조회. startKey부터 endKey 전까지의 범위에 포함되는 key들의 map을 리턴
treeMap.subMap(startKey, endKey);

// 전체 맵의 내림차순 조회
NavigableMap<Integer, Integer> reversedTreeMap = treeMap.descendingMap();

// key 값들의 내림차순 조회
NavigableSet<Integer> reversedKeySet = treeMap.descendingKeySet();






출처
[Java/자료구조] TreeMap : 정렬을 지원하는 Map
java.util.TreeMap 주요 메소드 [1/1]
[JAVA] TreeMap을 사용해보자

profile
💻 ⚾️ 🐻

0개의 댓글