1. TreeMap
TreeMap은 이전검색트리의 형태로 키와 값의 쌍으로 이루어진 데이터를 저장한다. 그래서 검색과 정렬에 적합하다. 이진트리를 기반으로 한 Map컬렉션이며, TreeSet과의 차이점은 TreeSet은 값만 저장 , TreeMap은 키와 값 Map.Entry에 저장한다.
검색의 관한 부분에서는 HashMap과 TreeMap 중 HashMap이 검색성능이 더 뛰어나므로 HashMap을 사용하는 것이 좋다. 다만 정렬이 필요한 경우에는 TreeMap을 사용하는 것이 좋다.
메서드 설명
메서드 | 설명 |
TreeMap() | TreeMap 객체 생성 |
TreeMap(Comparator c) | 지정된 Comparator을 기준으로 정렬하는 TreeMap 객체 생성 |
TreeMap(Map m) | 주어진 Map에 저장된 모든 요소를 포함하는 TreeMap 생성 |
TreeMap(SortedMap m) | 주어진 SortedMap에 저장된 모든 요소를 포함하는 TreeMap 생성 |
Map.Entry ceilingEntry(Object key) | 지정된 key와 일치하거나 큰 것중 제일 작은 것의 키와 값의 쌍(Map.Entry)를 반환. 없으면 null 반환 |
Object ceilingKey(Object key) | 지정된 key와 일치하거나 큰 것중 제일 작은 것의 키를 반환. 없으면 null 반환 |
void clear() | TreeMap에 저장된 모든 객체를 제거 |
Object clone() | 현재 TreeMap에 저장된 모든 객체를 제거 |
Comparator comparator() | TreeMap의 정렬기준이 되는 Comparator를 반환. 지정되지 않았다면 null 반환 |
boolean containsKey(Object key) | TreeMap에 지정된 키가 포함되어있는지 알려줌. |
boolean containsValue(Object value) | TreeMap에 지정된 값이 포함되어있는지 알려줌. |
NavigableSet descendingKeySet() | TreeMap에 저장된 키를 역순으로 정렬해 NavigableSet에 담아 반환 |
Set entrySet() | TreeMap에 저장된 키와 값을 엔트리의 형태로 set에 저장해 반환 |
Map.Entry firstEntry() | TreeMap에 저장된 첫번째(가장 작은) 키와 값의 쌍을 반환 |
Object firstKey() | TreeMap에 저장된 첫번째(가장 작은) 키를 반환 |
Map.Entry floorEntry() | 지정된 Key와 일치하거나 작은 것 중에서 제일 큰 키의 쌍을 반환. 없으면 null |
Object floorKey(Object Key) | 지정된 key와 일치하거나 작은 것 중에서 제일 큰 기를 반환. 없으면 null |
Object get(Object key) | 지정된 키의 값을 반환 |
SortedMap headMap(Object toKey) | TreeMap에 저장된 첫번째 요소부터 지정된 범위에 속한 모든 요소가 담긴 sortedMap을 반환 (toKey 미포함) |
- TreeMap 예제 1
public class TreeMapEx1 {
public static void main(String[] args) {
String[] data = {"A", "B", "C", "D", "A", "B", "B", "B", "B"};
TreeMap map = new TreeMap<>();
for (int i = 0; i < data.length; i++) {
if (map.containsKey(data[i])) {
Integer value = (Integer) map.get(data[i]);
map.put(data[i], value + 1);
} else {
map.put(data[i], 1);
}
}
Iterator it = map.entrySet().iterator();
System.out.println("기본정렬"); //TreeMap이라 키 오름차순 정렬
while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
int value = (int) entry.getValue();
System.out.println(entry.getKey() + ":" + printBar('#', value) + " " + value);
}
System.out.println();
}
public static String printBar(char ch, int value) {
char[] bar = new char[value];
for (int i = 0; i < bar.length; i++) {
bar[i] = ch;
}
return new String(bar);
}
}
출처 : 자바의 정석
'Java' 카테고리의 다른 글
[JAVA] 진법과 2의 보수법 (1) | 2023.12.07 |
---|---|
[JAVA] 변수와 변수의 타입 (1) | 2023.12.07 |
[JAVA] HashMap과 Hashtable (0) | 2023.12.07 |
[JAVA] TreeSet (0) | 2023.12.07 |
[Java] HashSet (0) | 2023.12.06 |