HashMap和Hashtable的异同点
- 相同点:
1.底层数据结构:都为数组 + 链表;
2.key都不能重复;
3.插入元素都不能保证插入有序;
4.哈希过程通过key进行哈希;
5.实现接口:Map<K,V>,Cloneable,java.io.Seriliable;
- 不同点:
1.扩容方式不同: HashMap以2 * table.length的方式;Hashtable以2 * table.length + 1的方式;
2.继承关系:HashMap继承AbstractMap;Hashtable继承Dictionary;
3.安全性问题:HashMap不能保证线程安全;Hashtable能保证线程安全;
4.null值问题:HashMap的key、value都可以为null,put方法下对key为null不为null分别进行处理;Hashtable的key、value不能为null,put方法下key、value都不能为null,为null则会抛出空指针异常;
5.默认值:HashMap默认数组大小为16;Hashtable默认数组大小为11;
6.hash算法不同;
7.效率不同:HashMap在单线程下效率高;Hashtable在单线程下效率低;()Sychronized:从用户态转换到内核态,再转到内核态。
具体关于HashMap和Hashtable的研究请转到https://blog.csdn.net/nn1__2970/article/details/88833989,https://blog.csdn.net/nn1__2970/article/details/88834064