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两种遍历方式
相关文章
相关标签/搜索