HashMap和HashTable的比較

2021-09-25 17:09:36 字數 677 閱讀 9878

1.根據鍵的hashcode值儲存資料,大多數情況下可以直接定位到它的值,因而具有很快的訪問速度,但遍歷順序是不確定的.

2.hashmap最多隻允許一條記錄的鍵為null,允許多條記錄的值為null.hashmap非執行緒安全,即任一時刻可以有多個執行緒同時寫hashmap,可能會導致資料的不一致。如果需要滿足執行緒安全,可以用 collections的synchronizedmap方法使hashmap具有執行緒安全的能力,或者使用concurrenthashmap.

1.hashtable是遺留類,很多對映的常用功能與hashmap類似,不同點是它承自dictionary類,並且是執行緒安全的,任一時間只有乙個執行緒能寫hashtable,併發性不如引入了分段鎖的concurrenthashmap.

2.hashtable不建議在新**中使用,不需要執行緒安全的場合可以用hashmap替換,需要執行緒安全的場合可以用concurrenthashmap替換.

3.在併發情況下,如果map.get(key)得到了null,無法判斷對映的value是null,還是因為沒有找到對應的key而為null,因此hashtable和concurrenthashmap都不能有null,無論是key還是value

如果想執行緒安全又想效率高,那我們怎麼辦?

如果大家想看jdk8中hashmap如何處理key為null的情況,點我傳送.

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...