자바
[JAVA] 자동 정렬해주는 Map TreeMap
planting grass
2024. 4. 30. 11:27
728x90
TreeMap
공식문서에서의 TreeMap 소개
A Red-Black tree based NavigableMap implementation.
한국어로 번역하면 아래와 같다.
TreeMap 클래스는 빨간-검은색 트리 (Red-Black Tree)를 기반으로 구현된 NavigableMap 인터페이스의 구현체다.
그렇다면 Red-Black Tree에 대해 알아보자.
Red-Black Tree
Red-Black Tree는 정렬 된 정보를 빠르게 저장해주는 특수한 이진 검색 트리 데이터 구조를 가진다.
이진 트리는 최악의 경우 트리의 높이(N)만큼 의 시간 복잡도를 가진다.
반면 레드-블랙 트리의 경우 부모 노드보다 작은 값을 갖는 노드는 좌측으로, 큰 값을 갖는 노드는 우측 자식으로 배치한다.
이를 통하여 트리가 균등하게 되어 O(log N)의 시간 복잡도를 갖게 된다.
즉, TreeMap은 Red-Black Tee를 기반으로 구현되었기에 데이터를 삭제, 추가할 경우 정렬을 해준다.
TreeMap에 Key를 저장할 경우 자동 오름차순 정렬을 해주는것을 확인할 수 있다.
(숫자는 값으로, 문자열은 유니코드로 정렬됨)
TreeMap 사용법
TreeMap 선언
TreeMap<Integer,String> treemap1 = new TreeMap<Integer,String>(); // TreeMap 생성
TreeMap<Integer,String> treemap2 = new TreeMap<>(Treemap1); // TreeMap1 과 동일한 값을 가진 TreeMap 생성
TreeMap<Integer,String> treemap3 = new TreeMap<Integer,String>(){{ // put을 사용해 초기값 설정
put(1,"a");
주의사항) HashMap
과는 다르게 선언 시 크기 지정이 불가능하다.
TreeMap 데이터 추가
TreeMap<Integer,String> treemap = new TreeMap<Integer,String>();
map.put(1, "ㄱ");
map.put(2, "ㄴ");
map.put(3, "ㄷ");
TreeMap 데이터 삭제
TreeMap<Integer, String> treemap = new TreeMap<Integer,String>();
treemap.put(1, "ㄱ");
treemap.put(2, "ㄴ");
treemap.put(3, "ㄷ");
treemap.remove(1); // key값 1 제거
treemap.clear(); // 모든 값 제거
728x90