我是初学者 我有源代码,我找到了这个方法
@Override
public int hashCode(){
return this.name.hashCode() + 57;
}
它可以从 HashSet 对象中删除重复项,我的问题是为什么存在 57,我删除了它然后代码运行良好,那么这个方法中数字的用途是什么?
最佳答案
在代码中:
class MyClass {
public int hashCode(){
return this.name.hashCode() + 57;
}
}
这个问题是有效的,因为 this.name.hashCode()
是一个格式良好的 hashCode()
实现(我们可以假设 this.name
code> 是一个 String
)。
我认为添加数字是因为方法 hashCode()
来自 Object
。假设您有一个 Set
,其值类型为 String
和 MyClass
。如果 String
实例与 MyClass.name
之一相同,则添加 57 可以避免两者共享相同的哈希码。
关于java - 向 hashCode() 添加数字有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58757873/