執行緒安全: hashmap 是非執行緒安全的,而 hashtable 是執行緒安全的,因為 hashtable 內部的方法,基本都經過 synchronized 修飾(如果要確保執行緒安全,建議使用 concurrenthashmap);
執行效率: 因為執行緒安全的原因,hashmap 要比 hashtable 效率高;此外,由於 hashtable 基本被淘汰,最好不要在專案中使用它;
對 null key 和 null value 的支援: hashmap 中,null 可以作為鍵,這樣的鍵最多可以有乙個,但可以有乙個或多個鍵所對應的值為 null;在 hashtable 中,鍵和值都不能為 null,否則會直接丟擲 nullpointerexception;
初始容量大小和擴容的機制不同:
① 建立時,如果未指定容量初始值,hashtable 預設的初始大小為11,之後每次擴充,容量變為原來的 2n+1;hashmap 預設的初始大小為16,之後每次擴充,容量變為原來的2倍;
② 建立時,如果給定了容量初始值,hashtable 將直接使用給定大小作為初始容量;而 hashmap 會將其擴充為2的冪次方大小,也就是說, hashmap 總是使用2的冪作為雜湊表的大小;
底層資料結構: jdk1.8 以後,hashmap 在解決雜湊衝突時有了較大的變化,當鍊表長度大於閾值(預設為8)時,會自動將鍊錶轉化為紅黑樹,以減少搜尋時間,而 hashtable 沒有這樣的機制。
HashMap的工作原理和hashtable區別
1.hashmap的工作原理?hashmap底層是陣列 鍊錶 以陣列儲存元素,如有hash相同的元素,在陣列結構中,建立鍊錶結構,再把hash相同的元素放到鍊錶的下乙個節點 基於hashing 雜湊法 雜湊法 是一種將字元組成的字串轉換為固定長度的數值或索引值的方法 的原理。通過put get 方法...
HashMap和LinkedHashMap的區別
hashmap,linkedhashmap,treemap都屬於map map 主要用於儲存鍵 key 值 value 對,根據鍵得到值,因此鍵不允許鍵重複,但允許值重複。hashmap 是乙個最常用的map,它根據鍵的hashcode 值儲存資料,根據鍵可以直接獲取它的值,具有很快的訪問速度。ha...
HashMap和LinkedHashMap的區別
hashmap,linkedhashmap,treemap都屬於map map 主要用於儲存鍵 key 值 value 對,根據鍵得到值,因此鍵不允許鍵重複,但允許值重複。hashmap 是乙個最常用的map,它根據鍵的hashcode 值儲存資料,根據鍵可以直接獲取它的值,具有很快的訪問速度。ha...