将数字添加到hashCode()上是什么?

问题描述 投票:1回答:2

我是初学者我有一个源代码,我找到了这个方法

    @Override
    public int hashCode(){

        return this.name.hashCode() + 57;

    }

它可以从HashSet对象中删除重复项,我的问题是为什么57存在,所以我删除了它,然后代码运行良好,那么此方法中数字的用途是什么?

java duplicates hashset hashcode
2个回答
1
投票

在代码中:

class MyClass {
   public int hashCode(){
      return this.name.hashCode() + 57;
   }
}

该问题是有效的,因为this.name.hashCode()是格式良好的hashCode()实现(我们可以假设this.nameString)。

我想添加数字是因为方法hashCode()来自Object。假设您有一个Set,其值的类型为StringMyClass。如果String实例与MyClass.name之一相同,则添加57避免两者共享相同的哈希码。


1
投票

[提供this.name具有很好实现的hashCode方法,不需要添加此57。实际上,无论在hashCode中如何实现this.name,在此处添加57都无济于事。因此,您通过删除它做得很好。

© www.soinside.com 2019 - 2024. All rights reserved.