HashMap和Hashtable的區別

2021-08-15 13:25:48 字數 648 閱讀 9987

繼承的父類不同:hashtable繼承自dictionary類,而hashmap繼承自abstractmap類,但兩者都實現了map介面。

hashtable的方法是執行緒同步的,而hashmap的方法未經同步,在多執行緒場合如果要使用hashmap,可以手動進行同步,或者呼叫collections.synchronizedmap(mapm)方法得到包裝的hashmap,或者使用concurrenthashmap。

hashtable不允許null值(key和value都不可以),而hashmap可以使用null值(key和value都可以)。

hashtable和hashmap都可以使用keyset(),entryset()和values()來遍歷,而hash table還多了一種elements(),此方法返回乙個enumeration(老版本迭代器),可以用來遍歷hashtable。

雜湊值的計算不同,hashtable使用hashcode()方法計算雜湊值,而hashmap重新定義計算hash值的方法。

hashtable中的陣列的預設大小是11,擴容的方式是oldsize*2+1,而hashmap陣列的預設大小是16,擴容的方式是oldsize*2(hashmap的陣列大小一定是2的指數)。

更進一步了解hashmap,可以看hashmap原始碼剖析

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