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

酒店预订网站开发三只松鼠搜索引擎推广

酒店预订网站开发,三只松鼠搜索引擎推广,上海专业网站建设网,汽车网站方案HashMap 的 table 数组何时初始化? 答案: table 数组在第一次调用 put() 方法时初始化。 为什么? HashMap 为了节省内存,采用了“懒加载”机制。即使用 new HashMap() 创建对象时,只是计算了参数(如容量、…

HashMap 的 table 数组何时初始化?

答案:
table 数组在第一次调用 put() 方法时初始化。
为什么?
HashMap 为了节省内存,采用了“懒加载”机制。即使用 new HashMap() 创建对象时,只是计算了参数(如容量、负载因子),并没有真正创建底层数组。只有当第一次插入数据(put)时,才会初始化 table 数组。

类比理解:
就像你买了一个书架(HashMap),但卖家不会直接寄给你,而是等你第一次需要放书(put)时,才根据你的需求(容量)组装好书架寄过来。


默认容量和扩容阈值是多少?

  1. 默认容量
    默认容量是 16(数组长度)。
    为什么是 16?
    16 是经验值,在性能和内存占用之间取得平衡。容量必须是 2 的幂(原因与哈希计算优化有关)。

  2. 默认扩容阈值
    默认阈值是 12(容量 × 负载因子)。
    负载因子(默认 0.75)的作用:
    阈值 = 容量 × 负载因子。当 HashMap 中的元素数量超过阈值时,触发扩容(数组翻倍)。


举个栗子 🌰

  1. 默认初始化:

    HashMap<String, Integer> map = new HashMap<>();
    
    • 此时 table 数组未初始化,容量和阈值均为 0。
    • 当第一次调用 map.put("a", 1) 时:
      • 初始化 table 数组为长度 16。
      • 计算阈值:16 × 0.75 = 12。
  2. 触发扩容:
    当插入第 13 个元素时,元素数量超过阈值 12,触发扩容:

    • 数组长度翻倍为 32。
    • 新阈值变为 32 × 0.75 = 24。

用户指定容量时会发生什么?

如果通过构造函数指定容量(如 new HashMap(10)):

  1. HashMap 会将其调整为最近的 2 的幂(例如 10 → 16)。
  2. 初始化时,阈值 = 调整后的容量 × 负载因子(例如 16 × 0.75 = 12)。

总结

场景初始化时机容量扩容阈值
默认构造函数第一次 put()1612(16×0.75)
指定容量的构造函数第一次 put()最近的 2 的幂容量 × 负载因子

关键点:

  • 容量始终是 2 的幂(优化哈希计算)。
  • 扩容是为了减少哈希冲突,保证性能。
http://www.hkea.cn/news/688183/

相关文章:

  • 龙岗做商城网站建设网络营销战略的内容
  • 网站建设网络公整站排名
  • 南昌购物网站制作软文广告成功案例
  • 鞍山找工作哪个网站最靠谱千度搜索引擎
  • 济南做网站互联网公司英文seo推广
  • 给企业做网站的公司品牌整合营销传播
  • 互联网技术应用学什么杭州优化建筑设计
  • 重庆网站建设要点襄阳seo优化排名
  • 哪个网站用织梦做的seo站长工具查询系统
  • 本地wordpress 上传搜索引擎优化简历
  • 个人创业做网站软文营销怎么写
  • wordpress相册点击弹出框金华seo全网营销
  • 郑州手机网站建设搜狗网站收录提交入口
  • 清风网站建设抖音推广方式有哪些
  • 工作室网站开发广东网站seo营销
  • 广州正佳广场攻略深圳债务优化公司
  • 如何自己免费建网站seo网站有哪些
  • 南昌网站建设案例如何制作自己的链接
  • wordpress大流量专业的网站优化公司
  • 做进口零食批发网站百度站长管理平台
  • 网站栏目建设存在的问题关键词简谱
  • 网站备案怎么那么麻烦google chrome 网络浏览器
  • 小米手机做网站服务器nba东西部最新排名
  • 做写字楼用哪个网站更好郑州seo代理外包
  • 做网站 淘宝营销策划思路
  • 网页设计要用到什么软件聊城seo优化
  • 用wordpress做网站百度推广管理
  • 一个空间可以放两个网站吗html模板网站
  • 做试用网站的原理网站推广优化平台
  • 软件工程培训机构学费亚马逊seo什么意思