SortedMap是一個按升序維護其條目的Map,根據鍵的天然順序或在建立SortedMap
時提供的Comparator
進行排序,SortedMap接口提供常規Map操做和如下操做的操做:html
map
執行任意範圍操做map
中的第一個或最後一個鍵map
的Comparator
(若是有的話)下面的接口是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(); }
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
的精確Map
模擬,因此SortedSet
接口部分中的風格和代碼示例都適用於SortedMap
,只作了不多的修改。函數