天天看点

学习:重写hashCode()方法的必要性

当一个类有可能会和其他类发生比较的时候,我们会重写equals方法,但大多数情况下,都忽略了重写hashCode方法。

这里说一下重写hashCode的必要性。

当我们使用HashSet或者HashMap的时候,在比对value|key是否存在时,会调用hashCode方法。

注意,hashSet的contains方法其实是依赖于HashMap的containsKey方法的。

我们来看下containsKey方法的实现:

由上面代码即可知,hashCode是重要的判断依据,没有重写hashCode,equals表现相等的两个类,它们的hashCode并不相等。

所以会导致containsKey方法返回false,测试代码如下:

包含HashCode的类:

没有重写hasCode的类:

测试类:

执行的结果为:

true

false

符合预期。证毕。