Map介面實現類之間的區別

2021-10-07 21:42:59 字數 1222 閱讀 2046

treemap,hashmap,linkedhashmap:非執行緒安全

hashtable,properties:執行緒安全

treemap:紅黑樹

hashmap: 陣列 + 單鏈表/紅黑樹

transient node table;

static class nodeimplements map.entry

linkedhashmap:hashmap + 雙向鍊錶

transient linkedhashmap.entryhead;

transient linkedhashmap.entrytail;

static class entryextends hashmap.node

}

hashtable,properties:陣列 + 單鏈表

treemap:k不允許null值,v允許存在多個null值

hashmap,linkedhashmap:k僅允許存在乙個null值

public v put(k key, v value) 

static final int hash(object key)

v允許存在多個null值

hashtable,properties:kv均不允許null值

同時,hashmap中定義的一些常量,這裡也需要進行一下說明

佇列初始化長度

default_initial_capacity = 16

載入因子,當map中的元素個數》初始容量*載入因子時,佇列會進行擴容

擴容大小為原來的大小,即擴容後的長度=擴容前x2

default_load_factor = 0.75

map中元素個數超過min_treeify_capacity,單鏈表長度超過該值,

則把單鏈表轉換成紅黑樹

treeify_threshold = 8

紅黑樹長度小於該值,將紅黑樹轉化為單鏈表

untreeify_threshold = 6

map中元素個數超過該值,才會進行樹化,否則僅會resize

min_treeify_capacity = 64

Map介面的實現類

雜湊表就是一種以鍵 值 key indexed 儲存資料的結構,只要輸入待查詢的值即 key,即可查詢到其對應的值。雜湊的思路很簡單,如果所有的鍵 hashcode 都是整數,那麼就可以使用乙個簡單陣列來實現 將鍵作為索引,值即為其對應的值,這樣就可以快速訪問任意鍵的值。簡單的計算方法 hashco...

Map介面及其實現類

一 map的實現類 map 雙列資料,儲存key value對的資料。實現類 hashmap 作為map的主要實現類 執行緒不安全的,效率高,可以儲存null的key和value 子類 linkedhashmap 保證在遍歷map元素時,可以按照新增的順序實現遍歷。原因 在原有的hashmap底層結...

java中的Map介面以及實現類

map介面 雙列資料,儲存key value對的資料。1.hashmap作為map的主要實現類,執行緒不安全的,效率高,可以儲存null的key和value。hashmap底層 陣列和鍊錶 jdk7 陣列,鍊錶和紅黑樹 jdk8 hashmap的內部類 node static class nodei...