8. HashMap 和 ConcurrentHashMap、 Hashtable 的区别
时间: 2023-11-16 09:59:33 浏览: 112
Hashtable和HashMap的区别:
HashMap、ConcurrentHashMap和Hashtable都实现了Map接口,但它们之间有以下几个区别:
1. 线程安全性:Hashtable是线程安全的,而HashMap和ConcurrentHashMap则不是。ConcurrentHashMap通过分段锁的方式实现了线程安全。
2. 同步(synchronization):Hashtable使用synchronized关键字来保证线程安全,而HashMap和ConcurrentHashMap则没有使用synchronized关键字,因此在多线程环境下效率更高。
3. 速度:由于Hashtable使用了synchronized关键字,因此在多线程环境下效率较低,而HashMap和ConcurrentHashMap则没有这个问题,因此在多线程环境下效率更高。
4. 初始容量和扩容方式:Hashtable默认的初始容量为11,而HashMap默认的初始容量为16。Hashtable在扩容时将容量变为原来的2倍加1,而HashMap在扩容时将容量变为原来的2倍。
5. null值:Hashtable不允许key或value为null,而HashMap和ConcurrentHashMap则允许key或value为null。
6. 解决hash冲突方式不同:HashMap中,当出现冲突时使用链表+红黑树的方式存储,而Hashtable中则都是以链表方式存储。ConcurrentHashMap则使用了一种不同的方式来解决hash冲突,具体实现可以参考引用。
阅读全文