相同点:
1.二者都是key-value双列集合
2.底层都是通过数组+链表方式实现数据的存储
不同点:
1.继承的父类不同
Hashtable继承Dictionary类,HashMap继承AbstractMap类,都实现了Map接口。
2.线程安全性不同
Hashtable中的方法是Synchronize的,HashMap中的方法在缺省的情况下是非Synchronize的。在多线程并发的环境下,可以直接使用Hashtable,不需要自己为它的方法实现同步,但使用HashMap是就必须要自己增加同步处理。
3.HashMap允许null键和null值,只能有一个,但是hashtable不允许。
4.HashMap是java开发中常用的类,但是Hashtable和vector一样变成了废弃类,不推荐使用,因为有其他高效的方式可以实现线程安全,比如ConcurrentHashMap。