컬렉션 프레임워크 (Collection Framework) - 6.5. TreeMap

CJI0524·2024년 7월 12일

Java/Collection Framework

목록 보기
23/26

1. TreeMap

TreeMapNavigableMap 인터페이스를 구현한 클래스로 이름에서 알 수 있듯이 이진검색트리의 형태로 이루어져 있다. 검색에 관한 대부분의 경우에서 HashMapTreeMap보다 더 뛰어나므로 HashMap을 사용하는 것이 더 좋지만 범위검색이나 정렬이 필요한 경우에는 TreeMap을 사용하는게 좋다.

2. TreeMap 클래스에 정의된 메서드 목록

2.1. 생성자

메서드기능
TreeMap()TreeMap 객체를 생성
TreeMap(Comparator c)지정된 Comparator를 기준으로 정렬하는 TreeMap 객체를 생성
TreeMap(Map m)주어진 Map에 저장된 모든 요소를 포함하는 TreeMap을 생성
TreeMap(SortedMap m)주어진 SortedMap에 저장된 모든 요소를 포함하는 TreeMap을 생성

2.2. 삽입 / 탐색 / 삭제 메서드

반환타입이 boolean인 메서드들은 작업에 성공하거나 사실이면 true, 아니면 false를 반환한다.

삽입

메서드기능
Object put(Object key, Object value)TreeMap에 value 객체를 key 객체에 연결하여 저장
void putAll(Map t)지정된 TreeMap의 모든 key-value 쌍을 추가

변경

메서드기능
Object replace(Object k, Object v)지정된 키의 값을 지정된 객체(v)로 대체
Object replace(Object key, Object oldValue, Object newValue)지정된 키와 객체(oldValue)가 모두 일치하는 경우에만 새로운 객체(newValue)로 대체

탐색

메서드기능
boolean containKey(Object key)지정된 key 객체와 일치하는 TreeMap의 key 객체가 있는지 확인
boolean containValue(Object value)지정된 value 객체와 일치하는 TreeMap의 value 객체가 있는지 확인
Set entrySet()TreeMap에 저장되어 있는 모든 key-value 쌍을 TreeMap.Entry 타입의 객체로 저장한 Set을 반환
Set keySet()TreeMap에 저장된 모든 key 객체를 반환
Object get(Object key)지정한 key 객체에 대응하는 value 객체를 찾아서 반환
Collection values()TreeMap에 저장된 모든 value 객체를 반환

삭제

메서드기능
Object remove(Object key)지정한 key 객체와 일치하는 key-value 객체를 삭제
void clear()TreeMap의 모든 객체를 삭제

2.3. SortedMap에서 추가적으로 활용하는 메서드

메서드기능
Object firstKey()맵에서 첫 번째(가장 작은) 키를 반환
Object lastKey()맵에서 마지막(가장 큰) 키를 반환
SortedMap headMap(Object toKey)첫번째 키부터 지정된 범위에 속한 모든 요소가 담긴 SortedMap을 반환
toKey는 포함하지 않음
SortedMap tailMap(Object fromKey)지정된 키부터 마지막 요소의 범위에 속한 요소가 담긴 SortedMap을 반환
SortedMap subMap(Object fromKey, Object toKey)지정된 두 개의 키 사이에 있는 모든 요소들이 담긴 SortedMap을 반환
toKey는 포함하지 않음

2.4. NavigableMap에서 추가적으로 활용하는 메서드

탐색

메서드기능
Map.Entry lowerEntry(Object key)지정된 키(key)보다 작은 키를 가진 가장 높은 항목을 반환
그런 항목이 없으면 null을 반환
Map.Entry higherEntry(Obejct key)지정된 키(key)보다 큰 키를 가진 가장 낮은 항목을 반환
그런 항목이 없으면 null을 반환
Object lowerKey(Object key)지정된 키(key)보다 작은 키를 반환
그런 키가 없으면 null을 반환
Object higherKey(Object key)지정된 키(key)보다 큰 키를 반환
그런 키가 없으면 null을 반환
Map.Entry floorEntry(Object key)지정된 키(key)와 같거나 작은 키를 가진 가장 높은 항목을 반환
그런 항목이 없으면 null을 반환
Map.Entry ceilingEntry(Object key)지정된 키(key)와 같거나 큰 키를 가진 가장 낮은 항목을 반환
그런 항목이 없으면 null을 반환
Object floorKey(Object key)지정된 키와 같거나 작은 키를 반환
그런 키가 없으면 null을 반환
Object ceilingKey(Object key)지정된 키와 같거나 큰 키를 반환
그런 키가 없으면 null을 반환
Map.Entry firstEntry()첫 번째(가장 낮은) 항목을 반환
맵이 비어있으면 null을 반환
Map.Entry lastEntry()마지막(가장 높은) 항목을 반환
맵이 비어있으면 null을 반환

부분집합 반환

메서드기능
NavigableMap subMap(Object fromKey, boolean fromInclusive, Object toKey, boolean toInclusive)지정된 두 개의 키 사이에 있는 모든 요소들이 담긴 NavagableMap을 반환.
fromInclusive와 toInclusive를 사용하여 경계 요소의 포함 여부를 지정 가능.
NavigableMap headMap(Object toKey, boolean inclusive)NavigableMap에 저장된 첫번째 요소부터 지정된 범위에 속한 모든 요소가 담긴 NavigableMap을 반환.
Inclusive를 사용하여 경계 요소의 포함 여부를 지정 가능.
NavigableMap tailMap(Object fromKey, boolean inclusive)지정된 키부터 마지막 요소의 범위에 속한 요소가 담긴 NavigableMap을 반환.
Inclusive를 사용하여 경계 요소의 포함 여부를 지정 가능.

삭제

메서드기능
Map.Entry pollFirstEntry()첫 번째(가장 낮은) 항목을 제거하고 반환 맵이
비어있으면 null을 반환
Map.Entry pollLastEntry()마지막(가장 높은) 항목을 제거하고 반환 맵이
비어있으면 null을 반환

2.5. TreeMap.Entry 클래스에서 정의된 메서드

메서드기능
boolean equals(Obejct o)동일한 Entry인지 비교
Object getKey()Entry의 key 객체를 반환
Object getValue()Entry value 객체를 반환
int hashCode()Entry의 해시코드를 반환
Object setValue(Object value)Entry의 value 객체를 지정된 객체로 변경

2.6. 추가 핵심 기능

Object 메서드

메서드기능
boolean equals(Object o)동일한 TreeMap인지 비교
int hashCode()해시코드를 반환
object clone()현재 TreeMap을 복제해서 반환

컬렉션 상태 체크 / 변경

메서드기능
boolean isEmpty()TreeMap이 비어있는지 확인
int size()TreeMap에 저장된 key-value 쌍의 개수를 반환
Comparator comparator()현재 TreeMap이 사용하는 Comparator를 반환
기본 자연 순서를 사용하는 경우에는 null을 반환
NavigableSet navigableKeySet()TreeMap의 모든 키가 담긴 NavigableSet을 반환
NavigableSet descendingKeySet()TreeMap에 저장된 키를 역순으로 정렬해서 NavigableSet에 담아서 반환
NavigableMap descendingMap()TreeMap에 저장된 Entry를 역순으로 정렬해서 NavigableMap에 담아서 반환

3. 해당 게시글 작성에 참고한 글 목록

자바의 정석 3판 (저자 : 남궁성)
Java Collections Framework Video Tutorial
오라클 Java 문서

profile
개발돌이

0개의 댓글