首页 > 技术文章 > HashMap和Hashtable有什么区别?

yonyong 原文

HashMap和Hashtable都实现了Map接口,因此很多特性非常相似。但是,他们有以下不同点:

1、HashMap是非线程安全的,HashTable是线程安全的。

2、HashMap允许键和值是null,而Hashtable不允许键或者值是null。

3、因为线程安全的问题,HashMap效率比HashTable的要高。
4、Hashtable是同步的,而HashMap不是。因此,HashMap更适合于单线程环境,而Hashtable适合于多线程环境。
 
5、HashMap提供了可供应用迭代的键的集合,因此,HashMap是快速失败的。另一方面,Hashtable提供了对键的列举(Enumeration)。
一般认为Hashtable是一个遗留的类。
    一般现在不建议用HashTable, ①是HashTable是遗留类,内部实现很多没优化和冗余。②即使在多线程环境下,现在也有同步的ConcurrentHashMap替代,没有必要因为是多线程而用HashTable。

推荐阅读