我是初学者我有一个源代码,我找到了这个方法
@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
是String
)。
我想添加数字是因为方法hashCode()
来自Object
。假设您有一个Set
,其值的类型为String
和MyClass
。如果String
实例与MyClass.name
之一相同,则添加57避免两者共享相同的哈希码。
[提供this.name
具有很好实现的hashCode
方法,不需要添加此57。实际上,无论在hashCode
中如何实现this.name
,在此处添加57都无济于事。因此,您通过删除它做得很好。