天天看點

API && MAP <K,V>接口及其相關實作類Map

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