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 的实现和冲突处理

待续

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容