Java™ 教程(SortedMap接口)

SortedMap接口

SortedMap是一個按升序維護其條目的Map,根據鍵的天然順序或在建立SortedMap時提供的Comparator進行排序,SortedMap接口提供常規Map操做和如下操做的操做:html

  • 範圍視圖 — 對排序後的map執行任意範圍操做
  • 端點 — 返回已排序map中的第一個或最後一個鍵
  • 比較器訪問 — 返回用於排序mapComparator(若是有的話)

下面的接口是SortedSet的Map模擬。java

public interface SortedMap<K, V> extends Map<K, V>{
    Comparator<? super K> comparator();
    SortedMap<K, V> subMap(K fromKey, K toKey);
    SortedMap<K, V> headMap(K toKey);
    SortedMap<K, V> tailMap(K fromKey);
    K firstKey();
    K lastKey();
}

Map操做

SortedMap繼承自Map的操做在已排序map和常規的map上的行爲相同,但有兩個例外:segmentfault

  • iterator操做在已排序map的任何Collection視圖上返回的Iterator按順序遍歷集合。
  • Collection視圖的toArray操做返回的數組按順序包含鍵、值或條目。

雖然接口不能保證這一點,可是Collection視圖在全部Java平臺的SortedMap實現中的toString方法按順序返回一個包含視圖全部元素的字符串。api

標準構造函數

按照慣例,全部通用Map實現都提供一個接受Map的標準轉換構造函數,SortedMap實現也不例外。在TreeMap中,這個構造函數建立一個實例,該實例根據鍵的天然順序對其條目進行排序,這多是個錯誤。最好動態檢查指定的Map實例是不是SortedMap,若是是,則根據相同的標準(比較器或天然順序)對新map排序。由於TreeMap採用了它所採用的方法,因此它還提供了一個構造函數,該構造函數接受SortedMap並返回一個新的TreeMap,其中包含與給定SortedMap相同的映射,按照相同的標準排序。注意,決定是否優先調用SortedMap構造函數而不是普通map構造函數的是參數的編譯時類型,而不是運行時類型。數組

SortedMap實現還按照約定提供了一個構造函數,該構造函數接受Comparator並返回一個根據指定的Comparator排序的空map,若是將null傳遞給這個構造函數,它將返回一個Map,根據鍵的天然順序對映射進行排序。oracle

相比SortedSet

由於這個接口是SortedSet的精確Map模擬,因此SortedSet接口部分中的風格和代碼示例都適用於SortedMap,只作了不多的修改。函數


上一篇:SortedSet接口

相關文章
相關標籤/搜索