功能特性
- HashTable 是线程安全的,而 HashMap 不是。
- HashMap 的性能要比 HashTable 更好,因为,HashTable 采用了全局同步锁来保证安全性,对性能影响较大。
内部实现
- HashTable 使用数组加链表、HashMap 采用了数组+链表+红黑树。
- HashMap 初始容量是 16、HashTable 初始容量是 11。
- HashMap 可以使用 null 作为 key,HashMap 会把 null 转化为 0 进行存储,而Hashtable 不允许。
散列算法
- HashTable 直接是使用 key 的 hashcode对数组长度做取模。
- HashMap 对 key 的 hashcode 做了二次散列,从而避免 key 的分布不均匀问题影响到查询性能。