当前位置: 首页 > news >正文

旅游小网站怎样做精不做全项目管理平台系统

旅游小网站怎样做精不做全,项目管理平台系统,电脑培训网上培训班,wordpress版权图片文章目录 JDK7 vs JDK8 的 HashMap 结构变化Java8 中哈希表的红黑树优化机制HashMap 添加元素的完整流程解析1. 计算 key 的哈希值并确定索引2. 检查该索引位置是否已有元素3. 处理哈希冲突4. 判断当前存储结构#xff08;链表还是红黑树#xff09;5. 判断链表长度是否超过 … 文章目录 JDK7 vs JDK8 的 HashMap 结构变化Java8 中哈希表的红黑树优化机制HashMap 添加元素的完整流程解析1. 计算 key 的哈希值并确定索引2. 检查该索引位置是否已有元素3. 处理哈希冲突4. 判断当前存储结构链表还是红黑树5. 判断链表长度是否超过 86. 触发扩容的判断7. 进行扩容8. 迁移元素 流程图补充HashMap 的初始容量与负载因子优化 JDK7 vs JDK8 的 HashMap 结构变化 在 JDK7 及更早版本HashMap 采用 数组 链表 结构当哈希冲突较多时链表可能变得很长导致查询性能从 O(1) 退化到 O(n)。 在 JDK8为了优化链表查询性能引入了红黑树 仍然采用 数组 作为底层存储。当某个桶中的链表长度 超过 8并且 table 的大小 ≥ 64 时链表转换为 红黑树。这样在极端情况下查询性能从 O(n) 降低到O(log n)。 Java8 中哈希表的红黑树优化机制 从JDK8开始为了优化哈希冲突情况下的查找性能当哈希桶中的链表长度超过 8 时链表会转换为红黑树。红黑树是一种自平衡二叉搜索树将最坏情况下的查找复杂度从 O(n) 降低到 O(log n)。如果没引入红黑树则最坏查找复杂度是O(n) 当树中元素数量低于 6 时红黑树会退化回链表以减少不必要的树操作开销提高小规模数据场景下的性能。 HashMap 添加元素的完整流程解析 1. 计算 key 的哈希值并确定索引 通过 key.hashCode() 计算出哈希值。采用 (哈希值 (table.length - 1)) 计算索引以确定 key 应该存放在 table 数组中的那个位置。 2. 检查该索引位置是否已有元素 如果该索引位置为空table[index] null说明当前 key 没有发生哈希冲突直接存入该位置并检查是否需要扩容。【在 HashMap 里负载因子loadFactor默认值是 0.75表示当元素个数达到 容量 * 0.75 时就会触发扩容】如果该索引位置已有元素说明发生了哈希冲突进入下一步处理。 3. 处理哈希冲突 在索引位置已有元素的情况下需要判断该 key 是否已经存在 如果 key 与已有节点的 key 相同说明是更新操作直接替换 value。如果 key 不同说明该索引位置是个链表或红黑树需要进一步处理。 4. 判断当前存储结构链表还是红黑树 如果该索引处存储的是红黑树按照红黑树的插入规则执行插入操作流程结束。如果是链表则遍历链表 如果链表中存在相同的 key则更新 value流程结束。如果链表中没有相同 key则在链表末尾插入新节点并继续下一步处理。 5. 判断链表长度是否超过 8 如果链表长度 ≤ 8不做额外处理。如果链表长度 8则需要判断是否转换为红黑树 如果 table 长度 64则将链表转换为红黑树流程结束。如果 table 长度 64则不转换为红黑树而是触发扩容见步骤 7。 6. 触发扩容的判断 在完成插入后需要判断是否需要扩容 size 阈值threshold table.length * 0.75 时触发扩容。扩容是基于整个 HashMap 的大小而不是单个链表的长度即使单个链表过长也不会单独扩容而是考虑整体 size。 7. 进行扩容 扩容策略table 容量翻倍如 16 → 3232 → 64。调整扩容阈值新阈值 新容量 * 0.75。重新计算 key 的索引 由于 table.length 发生变化所有 key 需要重新计算索引并迁移到新的 table。HashMap 采用高位 低位拆分的方式优化了 rehash 过程使得某些 key 的新索引保持不变而另一些 key 需要移动到新位置。 8. 迁移元素 旧 table 的数据逐个迁移到新 table。迁移规则 计算 oldIndex hash (oldCapacity - 1)newIndex hash (newCapacity - 1)。低位不变高位索引变化减少数据迁移的计算量。 流程图 补充 HashMap 的初始容量与负载因子优化 HashMap 的默认初始容量为 16负载因子为 0.75这一组合在性能与空间之间取得了平衡。较高的负载因子如 1.0可减少空间浪费但会增加哈希冲突的概率较低的负载因子则减少哈希冲突但会增加内存开销。 如果可预估 HashMap 的存储需求建议提前设置合适的初始容量以减少动态扩容带来的性能损耗。 ❤觉得有用的可以留个关注~~❤
http://www.pierceye.com/news/865154/

相关文章:

  • 新浪云服务器做网站重庆建设厅官方网站
  • 苏州市住房和城乡建设局官方网站郑州专业旅游网站建设
  • 网站免费正能量直接进入浏览器下载安装公开课网站建设
  • 个人做电影网站合法吗网页制作与网站建设完全学习手册下载
  • 椒江做网站wordpress的分类
  • 新手做网站应该注意什么重庆市建设工程造价信息网公众号
  • 网址输入奉化seo页面优化外包
  • 坪山商城网站建设哪家效益快教务管理系统是应用软件吗
  • 深圳网站搭建找谁怎么在手机上制作app
  • 做app和做网站的区别桂林市天气预报15天
  • 高端织梦html5网站模板 dedecms网络公司模板关键词排名优化方法
  • 上海网站建设咨找个网站2021能看到
  • 可以用服务器做网站查询公司信息
  • 个人可以备案企业网站吗旅行社网站 模板
  • 三丰云做网站步骤网站怎么上传ftp
  • 做二手车有哪些网站有哪些手续网站建设单位有哪些方面
  • 建设网站的和服务器常州免费网站制作
  • 电子外贸网站重庆有什么好玩的
  • 商务网站的建设阶段包括郑州的做网站公司哪家好
  • 深圳网站建设网络公司七星彩网投网站建设
  • 手机建网站公司wordpress增加关键字
  • 招聘网站有哪些平台电商网站建设方式
  • 网站的备案要求域名icp备案查询
  • 网站的投资和建设项目站群服务器
  • 建网站电脑版和手机版怎么做网页实训总结及心得体会
  • 网站建设咨询费用一流的网站建设流程图
  • 如何进行营销型企业网站的优化如何在百度上推广自己
  • 360怎么变成建设银行首选网站网站建设财务分析
  • 建设网站的法律可行性分析快手自媒体平台
  • 网站建设的内容规划网站空间 阿里云