hashcode用在哪
hashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,hashCode是用来在散列存储结构中确定对象的存储地址的;如果两个对象相同,就是适用于equals方法进行比较,那么这两个对象的hashCode一定要相同;
hashcode 相等两个类一定相等吗? equals呢? 相反呢?
结论:不一定相等。
原因:hashCode 算法有一定概率产生相同的 hashCode,即 hash 碰撞。
分重写 和 未重写 hashcode、equals 方法两种场景:
一、hashcode 方法 和 equals 方法没有重写时
hashcode相等两个类不一定相等
equals返回true的两个类一定相等(为同一个对象)
两个类相等hashcode不一定相等
两个类相等equals不一定返回true
二、hashcode 方法和 equals 方法均已按规范重写时
hashcode相等,两个类不一定相等(存在哈希冲突)
equals返回true的两个类一定相等
两个类相等hashcode一定相等
两个类相等equals一定返回true