Map
java.util.Map<K,V>
了解:
Map是一種存儲映射的容器類,在Map中鍵可以是任意類型的對象,但
鍵值對
的鍵,每個鍵都對應一個值,真正存儲在圖中的是鍵值構成的條目。
不能有重複
V get(Object key)
獲得與鍵對應的值
V put(K key, V value)
V putAll(Map<? extends K, ? extends V> entries) 将鍵與對應的值關系插入到映射中
boolean containKey(Object key)
boolean containValue(Object value) 查詢
HashMap<K,V>
java.util.HashMap<K,V>
了解:
HashMap是基于哈希表的Map接口的,繼承自
非同步實作
,
AbstractMap
AbstractMap
是部分實作Map接口的抽象類。
HashMap采用
實作,即使用連結清單處理沖突,同一hash值的連結清單都存儲在一個連結清單裡。但是當連結清單中的元素較多,即hash值相等的元素較多時,通過key值依次查找的效率較低。而JDK1.8中,HashMap采用數組+連結清單+紅黑樹實作,當連結清單長度超過門檻值(8)時,将連結清單轉換為紅黑樹,這樣大大減少了查找時間。
數組+連結清單
LinkedHashMap<K,V>
java.util.LinkedHashMap<K,V>
了解:
LinkedHashMap自
繼承
,它主要是用連結清單實作來
HashMap
HashMap類,HashMap中條目是沒有順序的,但是在LinkedHashMap中元素既可以按照它們
擴充
,也可以按它們
插入圖的順序排序
。
最後一次被通路的順序排序
TreeMap<K,V>
java.util.TreeMap<K,V>
了解:
TreeMap自
繼承
實作
AbstractMap
map
接口。
同時實作了接口
NavigableMap
,而接口NavigableMap則繼承自SortedMap。SortedMap是Map的子接口,使用它可以確定圖中的條目是排好序的。
TreeMap基于紅黑樹資料結構的實作,
鍵值可以使用
或
Comparable
接口來
Comparator
。在使用中,如果更新圖時
排序
,就使
不需要保持圖中元素的順序
,如
用HashMap
或者
需保持圖中元素的插入順序
,就使
通路順序
,如需要使圖按照
用LinkedHashMap
,就使
鍵值排序
。
用TreeMap