HashMap과 마찬가지로 Map 컬렉션 중 하나레드-블랙 트리(Red-Black-Tree)로 구현되어 있다.Map 보다 데이터 추가, 삭제에는 시간이 오래 걸리지만 정렬되어 저장된다는 점 때문에 조회가 빠르다.Key값을 기준으로 오름차순으로 정렬된다. Comparator 클래스를 구현하여 넣어주어야 한다.같은
Tree구조로 이루어진TreeSet과 차이점은TreeMap이Map.entry()를 저장한다는 점이다. 🌳
레드-블랙 트리(Red-Black Tree)에 대한 설명은 -> https://velog.io/@yuhaeni/Java-TreeSet
default 생성자를 이용한다.Comparator을 구현하거나, 람다식으로 나타낸다.// 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));
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.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을 사용해보자