- 继承的父类不同:Hashtable继承自Dictionary类,而HashMap继承自AbstractMap类,但两者都实现了Map接口。
- Hashtable的方法是线程同步的,而HashMap的方法未经同步,在多线程场合如果要使用HashMap,可以手动进行同步,或者调用
Collections.synchronizedMap(Map<K,V> m)
方法得到包装的HashMap,或者使用ConcurrentHashMap。 - Hashtable不允许null值(key和value都不可以),而HashMap可以使用null值(key和value都可以)。
- Hashtable和HashMap都可以使用keySet(),entrySet()和values()来遍历,而Hash table还多了一种elements(),此方法返回一个Enumeration(老版本迭代器),可以用来遍历Hashtable。
- 哈希值的计算不同,Hashtable使用hashCode()方法计算哈希值,而HashMap重新定义计算hash值的方法。
Hashtable中的数组的默认大小是11,扩容的方式是oldSize*2+1,而HashMap数组的默认大小是16,扩容的方式是oldSize*2(HashMap的数组大小一定是2的指数)。
HashMap和Hashtable的区别
最新推荐文章于 2022-07-20 18:03:45 发布