相关疑难解决方法(0)

为什么String中的Java hashCode()使用31作为乘数?

每Java文档中,哈希代码String对象被计算为:

s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
Run Code Online (Sandbox Code Playgroud)

使用int算术,其中s[i]是 字符串的第i个字符,是字符串n的长度,并^指示取幂.

为什么31用作乘数?

我知道乘数应该是一个相对较大的素数.那么为什么不是29岁,37岁,甚至97岁?

java string algorithm hash

461
推荐指数
11
解决办法
14万
查看次数

检查ArrayList是否包含给定对象

假设我有这样的课程:

class A {
  int elementA;
  int elementB
}
Run Code Online (Sandbox Code Playgroud)

我也有ArrayList这样的:ArrayList<A> listObj.

如何仅使用某些属性来检查该列表是否包含对象A?例如,只考虑elementA查找对象newA{elementA}是否已在列表中?

对于对象,A我已经定义了一个equals方法,我只考虑了这个方法elementA,但这还不够.

java list arraylist

21
推荐指数
2
解决办法
9万
查看次数

标签 统计

java ×2

algorithm ×1

arraylist ×1

hash ×1

list ×1

string ×1