hashMap和hashTable区别?
时间: 2024-03-07 09:52:15 浏览: 62
有关hashMap跟hashTable的区别,说法正确的是?
HashMap和Hashtable都是实现了Map接口的键值对存储结构,它们的主要区别如下:
1. 线程安全性:Hashtable是线程安全的,而HashMap不是线程安全的。如果多个线程同时访问一个Hashtable实例,不需要额外的同步措施,而如果多个线程同时访问一个HashMap实例,需要使用同步措施,比如使用Collections.synchronizedMap方法包装HashMap。
2. null键和值:Hashtable不允许null键和值,而HashMap允许null键和值。
3. 初始容量和扩容方式:Hashtable的初始容量为11,而HashMap的初始容量为16。Hashtable的扩容方式是将容量翻倍再加1,而HashMap的扩容方式是将容量翻倍。
4. 遍历方式:Hashtable的元素遍历只能通过Enumeration接口实现,而HashMap可以通过Iterator接口实现。
虽然Hashtable是线程安全的,但是由于其扩容方式的缺陷,导致在多线程环境下,其性能表现不如HashMap。因此,在Java 1.2之后,推荐使用HashMap。
阅读全文