每Java文档中,哈希代码的String对象被计算为:
Run Code Online (Sandbox Code Playgroud)s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]使用
int算术,其中s[i]是 字符串的第i个字符,是字符串n的长度,并^指示取幂.
为什么31用作乘数?
我知道乘数应该是一个相对较大的素数.那么为什么不是29岁,37岁,甚至97岁?
假设我有这样的课程:
class A {
int elementA;
int elementB
}
Run Code Online (Sandbox Code Playgroud)
我也有ArrayList这样的:ArrayList<A> listObj.
如何仅使用某些属性来检查该列表是否包含对象A?例如,只考虑elementA查找对象newA{elementA}是否已在列表中?
对于对象,A我已经定义了一个equals方法,我只考虑了这个方法elementA,但这还不够.