From Gossip@Openhome

Java Gossip: TreeMap

TreeMap實作Map介面與SortedMap介面,提供相關的方法讓您有序的取出對應位置的物件,像是 firstKey()、lastKey()等方法,TreeMap是J2SE中唯一實作SortedMap介面的類別,它使用紅黑樹結構來對加入的物件進 行排序。

看個簡單的例子:

  • TreeMapDemo.java
package onlyfun.caterpillar;

import java.util.*;

public class TreeMapDemo {
public static void main(String[] args) {
Map<String, String> map =
new TreeMap<String, String>();

map.put("justin", "justin's message!!");
map.put("momor", "momor's message!!");
map.put("caterpillar", "caterpillar's message!!");

Collection collection = map.values();
Iterator iterator = collection.iterator();
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}

由於您加入的是String物件,執行結果會自動依key的字典順序進行排序的動作:
caterpillar's message!!
justin's message!!
momor's message!!


依字典順序排序String物件是TreeMap預設的,如果您對物件有自己的一套排序順序,您要實作一個 Comparator 物件,它有兩個必須實作的方法,compare()equals(),前者必須傳回整數值,如果物件順序相同則傳回0,傳回正整數表示compare ()方法的第一個物件大於第二個物件,反之則傳回負整數,後者則是定義兩個物件是否相等。