如果没有重写hashCode()方法,在Java中调用任何对象的hashCode()方法会得到什么结果?
两个具有不同哈希码的对象,在equals()方面必须不相等。
a.hashCode() != b.hashCode()
必须暗示着 !a.equals(b)
然而,对于equals()来说不相等的两个对象可能具有相同的哈希码。如果许多对象具有相同的哈希码,则将这些对象存储在集合或映射中将变得不太有效率。
返回6位十六进制数字。这通常是对象被寻址的插槽的内存位置。从算法的角度来看,我猜JDK使用双重哈希(本地实现),这是开放地址最好的哈希函数之一。这种双重哈希方案极大地降低了碰撞的可能性。
以下文章将提供支持性的想法 -
Java - HashMap confusion about collision handling and the get() method