HashMap和HashTable的区别
哈希表由数组+链表组成,一个长度为16的数组中,每个元素存储的是一个链表的头结点。而HashMap和Hashtable就是哈希表结构。
数组的存储空间是连续的,占用内存严重,故空间复杂度很大,但是查找时间复杂度较小。数组的特点:寻址容易,插入和删除困难。
链表的存储空间是离散的,占用内存比较宽松,故空间复杂度较小,但查找时间复杂度较大。链表的特点:寻址困难,插入和删除容易。
继承类不同:
1.HashMap继承AbstractMap
2.Hashtable继承Dictionary
执行效率不同:
1.HashMap是非线程安全的,是Hashtable的轻量级实现,效率较高
2.Hashtable是线程安全的,效率较低
put方法对key和value的要求不同
1.HashMap允许Entry的key或value为null
2.Hashtable不允许Entry的key或value为null,否则出现NullPointerException
有无contains方法
1.HashMap没有contains方法
2.Hashtable有contains方法