参考:https://blog.csdn.net/u010297957/article/details/51974340
哈希算法:一类算法。
这类算法接受「任意长度的二进制输入值」,对输入值做换算(切碎),最终给出「固定长度的二进制输出值」。
哈希表:指一种数据结构,使用哈希算法
根据设定的Hash函数 - H(key)H(key) 和处理冲突的方法,将一组关键字映象 到一个有限的连续的地址集(区间)上,并以关键字在地址集中的象 作为记录在表中的存储位置,这样的映射表便称为Hash表。
HashMap:是Java中用哈希表实现的一种「Map」。
HashMap是继承自AbstractMap类,而HashTable是继承自Dictionary类。不过它们都实现了同时实现了map、Cloneable(可复制)、Serializable(可序列化)这三个接口
Hashtable是线程安全的,它的每个方法中都加入了Synchronize方法。
HashMap不是线程安全的,可以使用线程安全的ConcurrentHashMap。
Hashtable既不支持Null key也不支持Null value。
HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。
Hashtable默认的初始大小为11,之后每次扩充,容量变为原来的2n+1。
HashMap默认的初始化大小为16。之后每次扩充,容量变为原来的2倍。
HashMap效率更好。