2
可能重复:
Why does Java's hashCode() in String use 31 as a multiplier?重载hashCode最佳实践
@Override public int hashCode() {
int result = 17 + hashDouble(re);
result = 31 * result + hashDouble(im);
return result;
}
这是 “有效的Java” 的代码。它广泛用于企业应用程序吗?我很担心添加静态值。或者我们应该将17和31定义为某种Utility类中的最终变量,并从那里引用它们?
也可以有人解释这些数字是什么? 31只是一个随机选择的素数?