HashTable

  • 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

  • Hashtable中的key和value是不容許爲空的
  • 當咱們想要想Hashtable中添加元素的時候,首先計算key的hash值,而後經過hash值肯定在table數組中的索引位置,最後將value值替換或者插入新的元素,若是容器的數量達到閾值,就會進行擴充繼承

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兩種遍歷方式
相關文章
相關標籤/搜索