您可能知道,这是java中hashCode()方法的默认实现。我只是一般认为java通过将对象的内部地址转换为唯一的整数来生成唯一的哈希码(在合理范围内)。我很想知道为什么使用素数。是因为它增加了生成唯一哈希码的概率吗?如果是这样,怎么样?
最后,是否有使用31的具体原因?
非常感谢您的回复!
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
}