为什么不:
public native long hashCode();
Run Code Online (Sandbox Code Playgroud)
代替:
public native int hashCode();
Run Code Online (Sandbox Code Playgroud)
更高的机会获得唯一的哈希码?
Java用于int result = result * 31 + C计算哈希值.只是好奇为什么选择31.正如Effective Java中所述:
选择值31是因为它是一个奇数素数.如果它是偶数并且乘法溢出,则信息将丢失.因为乘以2相当于移位.
为了溢出,为什么长型不能使用?是关于哈希冲突和内存使用的权衡吗?