HashMap和HashTable都实现了 Map接,因此很多特性非常相似,但是,他们也有以下不同点:
- HashMap允许键和值是null(只允许一个键是null),而HashTable不允许键或者值是null。
- HashMap不是线程同步,适合单线程,HashTable是线程同步,适合多线程。
- HashMap是非线程安全的,HashTable是线程安全的, 因为线程安全问题,HashMap效率比HashTable要高。
- HashMap提供了可供迭代的键的集合,因此HashMap是快速失败的,HashTable提供了对键的列举(Enumeration)
- 一般认为HashTable是一个遗留的类,一般不推荐使用,因为遗留内部很多没有优化,即使在多线程环境下,也有同步的ConcurrentHashMap代替,没必要使用。