写点什么

JDK7 HashMap 如何实现?

作者:源字节1号
  • 2022 年 6 月 15 日
  • 本文字数:352 字

    阅读完需:约 1 分钟

JDK7 HashMap如何实现?

哈希表有两种实现方式,一种开放地址方式(Open addressing),另一种是冲突链表方式(Separate chaining with linked lists)。Java7 HashMap 采用的是冲突链表方式



从上图容易看出,如果选择合适的哈希函数,put()get()方法可以在常数时间内完成。但在对 HashMap 进行迭代时,需要遍历整个 table 以及后面跟的冲突链表。因此对于迭代比较频繁的场景,不宜将 HashMap 的初始大小设的过大。

有两个参数可以影响 HashMap 的性能: 初始容量(inital capacity)和负载系数(load factor)。初始容量指定了初始table的大小,负载系数用来指定自动扩容的临界值。当entry的数量超过capacity*load_factor时,容器将自动扩容并重新哈希。对于插入元素较多的场景,将初始容量设大可以减少重新哈希的次数。


如若转载,请注明出处:开源字节   https://sourcebyte.cn/article/161.html

用户头像

源字节1号

关注

一个着迷于技术又喜欢不断折腾的技术活跃者 2022.03.09 加入

一个着迷于技术又喜欢不断折腾的技术活跃者。喜欢并热爱编程,执着于努力之后所带来的美好生活!

评论

发布
暂无评论
JDK7 HashMap如何实现?_软件开发_源字节1号_InfoQ写作社区