概要
如上圖
- Map是映射接口,存儲的是Key-Value對
- AbstractMap繼承的Map,實現了Map的大部分功能,Map的實現類都是繼承AbstractMap來減少大量的代碼。
- SortedMap繼承Map,存儲的是"有序的鍵值對(Key-Value)"。
- NavigableMap繼承SortedMap,和SortedMap一樣存儲的都是有序的鍵值對,但是他還有一個導航的功能,可以返回大於/等於某個鍵值對的值,或者返回小於/等於某個鍵值對的值。
- TreeMap繼承NavigableMap,實現了NavigableMap的接口,所有TreeMap存儲的也是有序鍵值對。
- HashMap繼承於AbstractMap,但是沒有實現NavigableMap,所有他存儲的鍵值對不保證有序。
- Hashtable的鍵值對也不保證有序,但是Hashtable沒有繼承AbstractMap,而是繼承的Directionary,實現Map的接口。和HashMap的區別是,Hashtable是線程安全的;HashMap不是線程安全的。
- WeakHashMap的鍵是弱鍵。
Map
- Map是一個Key-value的映射接口。Map不能包含重復的鍵;每個鍵最多只能映射到一個值。
- Map提供三張Collection視圖:鍵集,值集,鍵-值映射關系。
- Map的有些實現類可以保證鍵值對的映射順序,有些不能。
- Map提供的返回值函數:entrySet:返回key-vlaue的鍵值對的Set集合;keySet:返回Key值的Set集合;values:返回value值的Collection集合
- Map提供相應的操作,如刪除,增加,修改等。
NavigableMap
NavigableMap除了繼承SortedMap的特性外,它的提供的功能可以分為4類:
第1類,提供操作鍵-值對的方法。
lowerEntry、floorEntry、ceilingEntry 和 higherEntry 方法,它們分別返回與小於、小於等於、大於等於、大於給定鍵的鍵關聯的 Map.Entry 對象。
firstEntry、pollFirstEntry、lastEntry 和 pollLastEntry 方法,它們返回和/或移除最小和最大的映射關系(如果存在),否則返回 null。
第2類,提供操作鍵的方法。這個和第1類比較類似
lowerKey、floorKey、ceilingKey 和 higherKey 方法,它們分別返回與小於、小於等於、大於等於、大於給定鍵的鍵。
第3類,獲取鍵集。
navigableKeySet、descendingKeySet分別獲取正序/反序的鍵集。
第4類,獲取鍵-值對的子集。