- Hashtable 是一個散列表,它存儲的內容是鍵值對(key-value)映射
- Hashtable 繼承於Dictionary,實現了Map、Cloneable、java.io.Serializable接口
- Hashtable 的函數都是同步的,這意味着它是線程安全的。它的key、value都不能夠爲null
- 與HashMap不一樣的是Hashtable是繼承Dictionary,實現了Map接口
- Map是"key-value鍵值對"接口,Dictionary是聲明瞭操做"鍵值對"函數接口的抽象類
第三個構造函數:java
(1)table是一個Entry[]數組類型,而Entry實際上就是一個單向鏈表。哈希表的"key-value鍵值對"都是存儲在Entry數組中的。 數組
(2)count是Hashtable的大小,它是Hashtable保存的鍵值對的數量。 安全
(3)threshold是Hashtable的閾值,用於判斷是否須要調整Hashtable的容量。threshold的值="容量*加載因子"。多線程
(4)loadFactor就是加載因子。函數
(5)modCount是用來實現fail-fast機制的線程
put 方法blog
get 方法索引
Hashtable和HashMap到底有哪些不一樣呢:接口
- 基類不一樣:HashTable基於Dictionary類,而HashMap是基於AbstractMap
- Dictionary是什麼?它是任何可將鍵映射到相應值的類的抽象父類
- 而AbstractMap是基於Map接口的骨幹實現,它以最大限度地減小實現此接口所需的工做
- null不一樣:HashMap能夠容許存在一個爲null的key和任意個爲null的value,可是HashTable中的key和value都不容許爲null
- 線程安全:HashMap時單線程安全的,Hashtable是多線程安全的
- 遍歷不一樣:HashMap僅支持Iterator的遍歷方式,Hashtable支持Iterator和Enumeration兩種遍歷方式