Java HashCode为什么使用31来计算

String===HashCode Double源码因HashCode调用底层c。下次会详细阐述
 
源码解析: 先判断当前hash值是否为0 .如果为0 在判断他S听所存放的元数据的长度是否大于0、在把元数据放入到对象中。循环出h的大小。
注释:算出的是ascii的字符串的散列哈希。
在Effective Java 2 这本书中提到的方案是因为使用31这个数(素数)会让哈希更分散。(这个只需使用素数就可以了,java为了更规范所以采用了31)。



 

猜你喜欢

转载自huangmiao.iteye.com/blog/2313260