1、HashMap和TreeMap一样继承自AbstractMap类,HashTable继承了Directionary类,两者都实现了Map接口。
2、HashTable是线程安全的,HashMap是线程不安全的
【HashTable内部的方法基本都使用了synchronized关键字修饰】因此,单线程环境下使用hashMap效率更高。
3、HashMap中,null可以作为key,但是这样的key只能有一个;可以有一个或者多个键对应的value为null;
HashTable中不支持key为null,如果put使用null,那么就会抛出NullPointerException异常。
4、HashTable底层是数组+链表结构,HashMap底层是数组+链表+红黑树结构( 在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为8)时,将链表转化为红黑树,以减少搜索时间)。
5、初始化容量不同:HashMap 的初始容量为:16,Hashtable 初始容量为:11