搞懂为什么重写equals还要重写hashcode(个人自述)

2026-01-22 21:19:38   竞技场直播

1.hashCode

首先,hashCode的英文翻译就是散列码,它使用一个int值来代表对象。

我们可以使用System.identityHashCode(Objectx)方法返回默认的hashcode,无论你创建的对象是否覆盖磨人的hashCode。

hashCode方法主要是用于HashMap这样的哈希表,差不多就是全部的哈希表。

我们的哈希链表也可以叫做哈系桶,默认有16个槽位,长度为15,位置的判定主要是依靠除数和求余,更快地操作是用机器码即2的N次方,20-2^4=4。

2.equals

hashCode并不需要唯一性,但equals必须严格判断两个是否相同

以下是equals方法有如下特性:

|自反性|对称性|传递性|一致性|null|

x.equals(x)一定返回true

如果x.equals(y)=true;so y.equals(x)=true

x=y,y=z=>z=x

x and y 中介值没有改变,那么无论如何调用都不会改变

任何不是null的x,x.equals(null)一定返回false

equalsandhashcode的规定

女警文洁(micharo)实时更新
词语风月是什么意思