java原始碼分析之集合框架SortedMap 、 NavigableMap 、Dictionary 09
SortedMap
SortedMap也是一個介面,繼承與Map介面,Sorted表示它是一個有序的鍵值對映。
SortedMap的排序方式有兩種:自然排序和指定比較器排序。插入有序的SortedMap的所有元素都必須實現Comparable介面(或被指定的比較器所接受)。
SortedMap定義的API:
//繼承與Map的API不再贅寫 package java.util; public interface SortedMap<K,V> extends Map<K,V> { Comparator<? super K> comparator(); //返回比較器物件 SortedMap<K,V> subMap(K fromKey, K toKey); //返回指定key範圍內的Map SortedMap<K,V> headMap(K toKey); //返回小於指定key的部分集合 SortedMap<K,V> tailMap(K fromKey); //返回大於等於指定key的部分集合 K firstKey(); //返回第一個元素的key K lastKey(); //返回最後一個元素的key }
NavigableMap
擴充套件的 SortedMap
,具有了針對給定搜尋目標返回最接近匹配項的導航方法。方法 lowerEntry
、floorEntry
、ceilingEntry
和 higherEntry
分別返回與小於、小於等於、大於等於、大於給定鍵的鍵關聯的 Map.Entry
物件,如果不存在這樣的鍵,則返回 null
。類似地,方法 lowerKey
、floorKey
、ceilingKey
和 higherKey
只返回關聯的鍵。所有這些方法是為查詢條目而不是遍歷條目而設計的。
可以按照鍵的升序或降序訪問和遍歷 NavigableMap
descendingMap
方法返回對映的一個檢視,該視圖表示的所有關係方法和方向方法都是逆向的。升序操作和檢視的效能很可能比降序操作和檢視的效能要好。subMap
、headMap
和 tailMap
方法與名稱相似的 SortedMap
方法的不同之處在於:可以接受用於描述是否包括(或不包括)下邊界和上邊界的附加引數。任何 NavigableMap
的 Submap 必須實現 NavigableMap
介面。
此外,此介面還定義了 firstEntry
、pollFirstEntry
、lastEntry
和 pollLastEntry
null
。
條目返回方法的實現應當返回 Map.Entry
對,表示產生對映關係時它們的快照,因此通常不 支援可選的 Entry.setValue
方法。不過要注意的是,可以使用 put
方法在關聯對映中更改對映關係。
subMap(K, K)
、headMap(K)
和 tailMap(K)
方法被指定為返回 SortedMap
,以允許現有 SortedMap
實現能相容地改進為實現 NavigableMap
,但鼓勵此介面的擴充套件和實現重寫這些方法以返回 NavigableMap
。類似地,可以重寫 SortedMap.keySet()
以返回 NavigableSet
。
NavigableMap繼承與SortedMap,先看它的API:
Dictionary
Dictionary
類是任何可將鍵對映到相應值的類(如 Hashtable
)的抽象父類。每個鍵和每個值都是一個物件。在任何一個 Dictionary 物件中,每個鍵至多與一個值相關聯。給定一個 Dictionary 和一個鍵,就可以查詢所關聯的元素。任何非 null
物件都可以用作鍵或值。
通常,應該在此類的實現中使用 equals
方法,以決定兩個鍵是否相同。
注:此類已過時。新的實現應該實現 Map 介面,而不是擴充套件此類。
Dictionary中也包括了操作鍵值對的基本方法呢,它的定義以及API如下: