Hashtable和HashMap相同点:
1. 它们都是存储键值对(key - value)的散列表,而且都是采用链地址法 实现的。
存储思想:通过 table 数组存储,table 数组是 Entry 类型的,每个table 数组最终都存储的是一个单向链表,链表中的每个节点都存储的键值对(key - value)。
2. 添加键值对:通过 key 计算出哈希值,再计算出数组的索引,根据索引去遍历单链表,如果链表中已经存在这个key 值,则覆盖原来的value,否则,加入新的节点。
3. 删除键值对: 通过 key 计算出哈希值,再计算出数组的索引,根据索引去遍历单链表,从单链表中删除这个键值对。
HashMap 和 HashTable 判断两个 key 和 value 相等的标准相同
Hashtable和HashMap不同点:
(1)基类不同:HashTable基于Dictionary类,而HashMap是基于AbstractMap。
Dictionary是什么?它是任何可将键映射到相应值的类的抽象父类,而AbstractMap是基于Map接口的骨干实现,它以最大限度地减少实现此接口所需的工作。
(2)null不同:HashMap可以允许存在一个为null的key和任意个为null的value,但是HashTable中的key和value都不允许为null。
(3)线程安全:HashMap时单线程安全的,Hashtable是多线程安全的。
(4)遍历不同:HashMap仅支持Iterator的遍历方式,Hashtable支持Iterator和Enumeration两种遍历方式
(2)null不同:HashMap可以允许存在一个为null的key和任意个为null的value,但是HashTable中的key和value都不允许为null。
(3)线程安全:HashMap时单线程安全的,Hashtable是多线程安全的。
(4)遍历不同:HashMap仅支持Iterator的遍历方式,Hashtable支持Iterator和Enumeration两种遍历方式