HashMap和HashTable的区别
时间: 2023-05-25 16:03:01 浏览: 89
hashMap和hashTable的区别
1. 线程安全性:Hashtable是线程安全的,而HashMap则不是。因此,在并发情况下,Hashtable是更好的选择。
2. 方法调用:Hashtable使用Enumeration的方法来遍历元素,而HashMap则使用迭代器(Iterator)。另外,Hashtable的方法都是synchronized的,而HashMap则不是。
3. Null值:HashMap允许key和value都为null,而Hashtable则不允许。如果试图将null值放入Hashtable中,会抛出NullPointerException异常。
4. 初始容量和加载因子:Hashtable的初始容量和加载因子都有默认值,而HashMap的默认初始容量为16,加载因子为0.75。如果没有特别的需要,建议使用默认值。
5. 性能:HashMap通常比Hashtable快,因为它不进行线程同步。如果程序不需要并发访问,建议使用HashMap。
6. 继承:Hashtable继承自Dictionary类,而HashMap继承自AbstractMap类。
综上所述,如果需要线程安全,推荐使用Hashtable;如果不需要线程安全,也不需要考虑null值的情况,建议使用HashMap。但是,在Java8中,ConcurrentHashMap已经被推荐用于高并发场景,因为它比Hashtable更快,而且线程安全性也更好。
阅读全文