千家信息网

JDK7 HashMap环的产生原理是怎样的

发表于:2024-11-25 作者:千家信息网编辑
千家信息网最后更新 2024年11月25日,JDK7 HashMap环的产生原理是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。JDK7中当我们用头插法 对旧table数
千家信息网最后更新 2024年11月25日JDK7 HashMap环的产生原理是怎样的

JDK7 HashMap环的产生原理是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

JDK7中当我们用头插法 对旧table数据重定位到新table的时候我们知道是会行程环的,环产生的核心函数transfer如下,其中重点关注部分以标出。

  1. 头插法正常情况下:

  2. 并发情况下,比如我有两个线程在同时进行put数据跟扩容操作,线程1只执行了Entry next = e.next就被挂起了,而线程2正常执行完毕,结果图如下:

    线程2执行完毕后线程1接着从原来的暂停处开始执行下面的语句:

    通过逐步分析跟绘图可以知道红色部分会有环产生。JDK中HashMap是不安全的,多线程情况下要用ConcurrentHashMap。

7vs8

  1. 7中找Hash用了4次,8中只用了1次。

  2. 7 = 数组 + 链表,8 = 数组 + 链表 + 红黑树

  3. 7中是头插法,多线程容易造成环,8中是尾插法。

  4. 7的扩容是全部数据重新定位,8中是位置不变+ 移动旧size大小来实现更好些。

  5. 7是先判断是否要扩容再插入,8中是先插入再看是否要扩容。

  6. HashMap不管78都是现场不安全的,多线程情况下记得用ConcurrentHashmapConcurrentHashmap下篇文章说。

常见问题

随机搜罗了一些常见HashMap问题,如果把上述代码都看懂了应付这些应该没问题。

  1. HashMap原理,内部数据结构。

  2. HashMap中的put,get,remove大致过程。

  3. HashMap中 hash函数实现。

  4. HashMap如何扩容。

  5. HashMap几个重要参数为什么这样设定。

  6. HashMap为什么线程不安全,如何替换。

  7. HashMap在JDK7跟JDK8中的区别。

  8. HashMap中链表跟红黑树切换思路。

关于JDK7 HashMap环的产生原理是怎样的问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

线程 问题 情况 数据 原理 安全 函数 常见 数组 更多 部分 分析 定位 帮助 解答 易行 重要 简单易行 下篇 两个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 图书销售系统 数据库 部队网络安全风险防控指南 数据库中修改信息怎么写 泗阳自动网络技术参考价格 中铝集团网络安全 网络安全为人民宣传稿 关于网络安全的培训记录 电脑服务器创建系统环境变量 干警观看网络安全宣传周活动 中华网络安全法首要目的 数据库升级后hint为什么失效 汇中仪表软件开发 在家可以连公司的服务器吗 成都梦隆网络技术有限公司 苹果手机移动端软件开发 大型系统采用什么数据库 事务 数据库 回滚 深圳定制软件开发代码 达梦数据库表加索引 商丘大润发网络安全 邯郸工控软件开发正规平台 懒朋友互联网科技有限公司 数据库物理模型图解读 数据库技术与应用项目 饥荒生成世界启动服务器有点问题 奔酷网络技术有限公司怎么样 传奇改完技能数据库没变化 软件开发面试官会问什么问题 愚人节网络安全防范预警 打电话需要经过腾讯服务器吗
0