我经常使用 IntelliJ IDEA 自动生成一个类的hashCode()
方法,通常该方法采用以下形式:
result = 31 * result + ...
我的问题是乘以 31 的目的是什么?我知道这是一个质数,但为什么要专门选择 31?此外,如果hashCode()
为一个特别小/大的数据集实现一个,人们会以不同的方式解决这个问题吗?
我经常使用 IntelliJ IDEA 自动生成一个类的hashCode()
方法,通常该方法采用以下形式:
result = 31 * result + ...
我的问题是乘以 31 的目的是什么?我知道这是一个质数,但为什么要专门选择 31?此外,如果hashCode()
为一个特别小/大的数据集实现一个,人们会以不同的方式解决这个问题吗?