2017-04-12 Java hashMap 学习 - Go语言中文社区

2017-04-12 Java hashMap 学习


为啥 equals 和 hashCode 需要同时重写

参考IBM

延伸阅读:immutable class 待解读

String的equals(), hashCode()

String hash 算法:
s[0]31^(n-1) + s[1]31^(n-2) + ... + s[n-1]

for (int i = 0; i < value.length; i++) { h = 31 * h + val[i]; }
31 是一个神奇的数字,貌似是冲突比较少,比较平均的经验值。
戳这里也有一个例子

hash 冲突处理

两种:Separate chaining(同hash 加链表) |Open addressing(同hash 存下一地址)

区别:冲突时是否将数据存在同一 bucket。

参考 hash table wiki

java hashMap 的实现和冲突处理

待续

版权声明:本文来源简书,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://www.jianshu.com/p/6e0a86d46bcd
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-01-09 21:47:48
  • 阅读 ( 2253 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢