자바의정석 3rd Edition 2권을 참조하였습니다.
https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=76083001
TreeMap
이진검색트리의 형태이고 키와 값의 쌍으로 이루어진 데이터를 저장한다.
검색에 관련한 대부분의 경우에서 HashMap이 TreeMap보다 더 뛰어나나
범위 검색이나 정렬이 필요한 경우에는 TreeMap을 사용하자.
TreeMapEx1.java
더보기
package kr.co.dong.datastructure.treemap;
import java.util.*;
public class TreeMapEx1 {
public static void main(String[] args) {
String[] data = {"A","K","A","K","D","K","A","K","K","K","Z","D"};
TreeMap map = new TreeMap();
for(int idx = 0; idx < data.length; idx++) {
if(map.containsKey(data[idx])) {
Integer value = (Integer)map.get(data[idx]);
map.put(data[idx], new Integer(value.intValue() + 1));;
} else {
map.put(data[idx], new Integer(1));
}
}
Iterator it = map.entrySet().iterator();
System.out.println("= 기본정렬 =");
while(it.hasNext()) {
Map.Entry entry = (Map.Entry)it.next();
int value = ((Integer)entry.getValue()).intValue();
System.out.println(entry.getKey() + " : " + printBar('#', value) + " " + value);
}
System.out.println();
// map을 ArrayList로 변환한 다음에 Collections.sort()로 정렬
Set set = map.entrySet();
List list = new ArrayList(set); // ArrayList(Collection c)
// static void sort(List list, Comparator c)
Collections.sort(list, new ValueComparator());
it = list.iterator();
System.out.println("= 값의 크기가 큰 순서로 정렬 =");
while(it.hasNext()) {
Map.Entry entry = (Map.Entry)it.next();
int value = ((Integer)entry.getValue()).intValue();
System.out.println(entry.getKey() + " : " + printBar('#', value) + " " + value);
}
}// public static void main
static class ValueComparator implements Comparator {
public int compare(Object o1, Object o2) {
if(o1 instanceof Map.Entry && o2 instanceof Map.Entry) {
Map.Entry e1 = (Map.Entry)o1;
Map.Entry e2 = (Map.Entry)o2;
int v1 = ((Integer)e1.getValue()).intValue();
int v2 = ((Integer)e2.getValue()).intValue();
return v2 - v1;
}
return -1;
}
}// static class ValueComparator implements Comparator
public static String printBar(char ch, int value) {
char[] bar = new char[value];
for(int idx = 0; idx < bar.length; idx++) {
bar[idx] = ch;
}
return new String(bar);
}
}
/*
= 기본정렬 =
A : ### 3
D : ## 2
K : ###### 6
Z : # 1
= 값의 크기가 큰 순서로 정렬 =
K : ###### 6
A : ### 3
D : ## 2
Z : # 1
*/
TreeMap는 오름차순 정렬 / Comparator를 구현한 Collections.sort(List list, Comparator c)를 이용해 내림차순 정렬
'Computer Science > DataStructure' 카테고리의 다른 글
Collections (0) | 2022.11.23 |
---|---|
Properties (0) | 2022.11.22 |
해싱과 해싱함수 (0) | 2022.11.21 |
HashMap과 Hashtable (0) | 2022.11.18 |
TreeSet (0) | 2022.11.18 |