Java SortedSet and SortedMap

最近用到了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時,
資料量如果太大,需要的資源相對較多。

Java SortedSet and SortedMap 有 “ 2 則留言 ”

發表留言