相同点:
1. HashMap和Hashtable都实现了Map接口
2. 都可以存储key-value数据
不同点:
1. HashMap可以把null作为key或value,HashTable不可以
2. HashMap线程不安全,效率高。HashTable线程安全,效率低。
3. HashMap的迭代器(Iterator)是fail-fast迭代器,而Hashtable的enumerator迭代器不是fail-fast 的。 什么是fail-fast? 就是最快的时间能把错误抛出而不是让程序执行。
Java 5提供了ConcurrentHashMap,它是HashTable的替代,比HashTable的扩展性更好。 ConcurrentHashMap将整个Map分为N个segment(类似HashTable),可以提供相同的线程安全,但是 效率提升N倍,默认N为16。