哈希结构
1,JDK中提供了两种哈希表
Hashtable和HashMap
Hashtable和HashMap的区别:
*(1)*Hashtable,旧,线程安全的,不允许Key与Value为null值,只支持非空对象;
Hashtable的物理结构的实现:-----数组+链表
(2)HashMap,新,线程不安全的,允许Key与Value为null值,
HashMap的物理结构实现:
---------JDK1.7及之前(数组+链表)
---------JDK1.8及之后(数组+链表/红黑树)
2,哈希结构与Key对象的hashCode值紧密相关;
—每一个对象都有hashCode值。
1,理想状态下,每一个对象都有唯一的hashCode值
2,实际中遵循几个常规协定:
----------如果两个对象的hashCode值不相同,那么他们一定不相同(即调用equals方法返回false)。
----------如果两个对象的equals方法返回了true,那么要求他们的hashCode值必须相同。
----------如果两个对象的hashCode值一样,那么他们不一定相同(即调用equals方法可能相同,也可能不同)。
3.哈希结构