1. 程式人生 > >java原始碼分析之集合框架SortedMap 、 NavigableMap 、Dictionary 09

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,具有了針對給定搜尋目標返回最接近匹配項的導航方法。方法 lowerEntryfloorEntryceilingEntryhigherEntry 分別返回與小於小於等於大於等於大於給定鍵的鍵關聯的 Map.Entry 物件,如果不存在這樣的鍵,則返回 null。類似地,方法 lowerKeyfloorKeyceilingKeyhigherKey 只返回關聯的鍵。所有這些方法是為查詢條目而不是遍歷條目而設計的。

        可以按照鍵的升序或降序訪問和遍歷 NavigableMap

descendingMap 方法返回對映的一個檢視,該視圖表示的所有關係方法和方向方法都是逆向的。升序操作和檢視的效能很可能比降序操作和檢視的效能要好。subMapheadMaptailMap 方法與名稱相似的 SortedMap 方法的不同之處在於:可以接受用於描述是否包括(或不包括)下邊界和上邊界的附加引數。任何 NavigableMap 的 Submap 必須實現 NavigableMap 介面。

        此外,此介面還定義了 firstEntrypollFirstEntrylastEntrypollLastEntry

方法,它們返回和/或移除最小和最大的對映關係(如果存在),否則返回 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如下: