最近用到了Set和Map的結構,所以做一下筆記。
在Java中,Set指的是一個包含不重複資料的集合,
例如 {3,9,11,2} 。
Set是Interface,SortedSet則是它的sub interface。
Set的一般實作方式有下列三種,
1. HashSet
速度最快,採用Hash Table儲存資料,
但不保証資料順序。此實作方式執行效率最好。
2. TreeSet
以紅黑樹儲存資料,以資料的值大小來排序。
例如上面的Set放到TreeSet中,會成為 {2, 3, 9, 11} 。
3. LinkedHashSet
以Linked List儲存資料,所以排序是以資料放到Set的順序為主。
以下是簡單的SortedSet操作範例
SortedSet<Integer> s = new TreeSet<Integer>(); s.add(9); s.add(2); s.add(11); s.add(4); Iterator it = s.iterator(); while (it.hasNext()) { //按數字大小顯示 System.out.println(it.next()); }
同樣的,Map interface也有SortedMap。
Map是指<key, value>的資料型態,其中key不能重複。
SortedMap則是以Key來排序。
而實作方式同樣有三種,
1. HashMap
2. TreeMap
3. LinkedHashMap
底下為程式碼,
SortedMap m = new TreeMap(); m.put(3, 0); m.put(1, 1); m.put(4, 0); m.put(2, 1); Iterator it= m.keySet().iterator(); while (it.hasNext()) { Object key = it.next(); //依key的順序顯示key and value System.out.println("key : " + key + " value :" + m.get(key)); }
當然,使用SortedSet or SortedMap時,
資料量如果太大,需要的資源相對較多。
感謝你的分享。
WordPress.com 支援漂亮的高亮顯示 code ,
http://faq.wordpress.com/2007/09/03/how-do-i-post-source-code/
或許可以試試看。 ;-)
已經套用了,謝謝你提供的資訊。