import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;
public class TreeMapExample1 {
// 객체를 찾거나 범위검색에 속도가 빠르다. 그에 따른 메소드를 지원한다.
// 이진트리로 구조를 갖고 있다. 데이타가 저장시 오름차순으로 정렬구조로 관리된다.
public static void main(String[] args) {
TreeMap<Integer, String> scores = new TreeMap<Integer, String>();
scores.put(new Integer(87), "김동연");
scores.put(new Integer(98), "송지은");
scores.put(new Integer(75), "송삼색");
scores.put(new Integer(95), "지은");
scores.put(new Integer(80), "고등어");
Entry<Integer, String> entry = null;
entry = scores.firstEntry();
System.out.println("가장 낮은 점수: " + entry.getKey() + "-" + entry.getValue());
entry = scores.lastEntry();
System.out.println("가장 높은 점수: " + entry.getKey() + "-" + entry.getValue());
entry = scores.lowerEntry(new Integer(95));
System.out.println("95보다 바로 아래 점수: " + entry.getKey() + "-" + entry.getValue());
entry = scores.higherEntry(new Integer(95));
System.out.println("95보다 바로 위 점수: " + entry.getKey() + "-" + entry.getValue());
entry = scores.floorEntry(new Integer(95));
System.out.println("95이거나 바로 아래 점수: " + entry.getKey() + "-" + entry.getValue());
entry = scores.ceilingEntry(new Integer(85));
System.out.println("85이거나 바로 위 점수: " + entry.getKey() + "-" + entry.getValue());
while(!scores.isEmpty()) {
entry = scores.pollFirstEntry(); //낮은 점수 -> 큰 점수 꺼내오고, 제거
System.out.println(entry.getKey() + "-" + entry.getValue() + " (남은 객체 수: " + scores.size());
}
}
}
import java.util.Map.Entry;
import java.util.NavigableMap;
import java.util.Set;
import java.util.TreeMap;
public class TreeMapExample2 {
public static void main(String[] args) {
// 문자열 데이타는 유니코드로 정렬구조를 가지고 있다. 0 ~ 65535 범위(Ascii Code포함)
TreeMap<Integer, String> scores = new TreeMap<Integer, String>();
scores.put(new Integer(87), "김동연");
scores.put(new Integer(98), "송지은");
scores.put(new Integer(75), "송삼색");
scores.put(new Integer(95), "지은");
scores.put(new Integer(80), "고등어");
//내림차순
NavigableMap<Integer, String> descendingMap = scores.descendingMap();
Set<Entry<Integer, String>> descendingEntrySet = descendingMap.entrySet();
for(Entry<Integer, String> entry : descendingEntrySet) {
System.out.print(entry.getKey() + "-" + entry.getValue() + " ");
}
System.out.println();
//오름차순
NavigableMap<Integer, String> ascendingMap = descendingMap.descendingMap();
Set<Entry<Integer, String>> ascendingEntrySet = ascendingMap.entrySet();
for(Entry<Integer, String> entry : ascendingEntrySet) {
System.out.print(entry.getKey() + "-" + entry.getValue() + " ");
}
}
}
import java.util.Map;
import java.util.NavigableMap;
import java.util.TreeMap;
public class TreeMapExample3 {
public static void main(String[] args) {
TreeMap<String, Integer> treeMap = new TreeMap<String, Integer>();
treeMap.put("apple", new Integer(10));
treeMap.put("forever", new Integer(60));
treeMap.put("description", new Integer(40));
treeMap.put("ever", new Integer(50));
treeMap.put("zoo", new Integer(10));
treeMap.put("base", new Integer(20));
treeMap.put("guess", new Integer(70));
treeMap.put("cherry", new Integer(30));
System.out.println("[c~f 사이의 단어검색]"); // f 한개문자 포함되고, f로 시작하는 문자열은 포함이 안된다.
NavigableMap<String, Integer> rangeMap = treeMap.subMap("c", true, "f", true);
for(Map.Entry<String, Integer> entry : rangeMap.entrySet()) {
System.out.println(entry.getKey() + "-" + entry.getValue() + "페이지");
}
}
}