String->HashCode

String的hashCode算法是
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
其中s[i]是第i个字符。n是String长度。并不是3楼说的“对象存储的物理地址”

hashCode很容易冲突。因为hashCode方法返回类型是int。所以一个长的字符串hashCode值溢出Interger.MAX_VALUE后会只保留低位。所以非常有可能有个很长的字符串和一个很短的字符串的hashCode是一样的。而且这种情况非常容易出现。

你可能感兴趣的:(HashCode)