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

HashMap的扩容机制

  • 在添加元素或初始化的时候需要调用resize方法进行扩容,第一次添加数据初始化数组长度为16,以后每次每次扩容都是达到了扩容阈值(数组长度 * 0.75)

  • 每次扩容的时候,都是扩容之前容量的2倍;

  • 扩容之后,会新创建一个数组,需要把老数组中的数据挪动到新的数组中

    • 没有hash冲突的节点,则直接使用 e.hash & (newCap - 1) 计算新数组的索引位置

    • 如果是红黑树,走红黑树的添加

    • 如果是链表,则需要遍历链表,可能需要拆分链表,判断(e.hash & oldCap)是否为0,该元素的位置要么停留在原始位置,要么移动到原始位置+增加的数组大小这个位置上

相关文章:

  • AM32电调学习解读五:tenKhzRoutine
  • 二十、案例特训专题3【系统设计篇】web架构设计
  • nginx相关面试题30道
  • 【嵙大o】C++作业合集
  • 【Linux】利用多路转接epoll机制、ET模式,基于Reactor设计模式实现
  • Python 中 if 和 else 基础知识的详解和使用
  • 一种基于条件约束注意力生成对抗网络的水下图像增强模型
  • SIGIR 2025 多tokenizer的生成式推荐 MTGRec
  • 七、xlib窗口渲染
  • C#接口(Interface)全方位讲解:定义、特性、应用与实践
  • 2901. 最长相邻不相等子序列 II
  • vLLM - 控制生成过程中返回对数概率信息 logprobs的输出和解释
  • [人月神话_5] 兵器库 | 整体部分 | 祸起萧墙
  • Nginx配置与命令
  • ubuntu中已经存在python3.12.3, 如何安装python3.10.8且命令python3版本切换为python3.10.8
  • 得力标签打印机系统集成方案的技术应用与场景实践
  • 02 Nginx虚拟主机
  • 如何畅通需求收集渠道,获取用户反馈?
  • 软考IPSEC案例分析
  • Linux进程信号(三)之信号产生2
  • 水果预包装带来的环境成本谁来分担?
  • 又一例!易方达基金张坤卸任副总职务,将专注于投资管理工作
  • 幼儿园教师拍打孩子额头,新疆库尔勒教育局:涉事教师已被辞退
  • 七猫征文大赛颁出112万奖金,非遗题材作品斩获金奖
  • 贵州仁怀通报“正新鸡排鸡腿里全是蛆”:已对同类产品封存送检
  • 自然资源部:不动产登记累计化解遗留问题房屋2000多万套