ArrayList && HashMap扩容策略
2024-09-05 13:20:04
ArrayList扩容策略:
默认10 扩容时是base + base/2, 即10 15 22 33 49...
扩容时不安全:grow方法扩容时,赋值 elementData = Arrays.copyOf(elementData, newCapacity)时,若两个线程都进入这个地方,会导致快的赋值被慢的覆盖,导致跳号
HashMap扩容策略:
容量默认16 loadFactor默认0.75 必须大于0
容量扩容是16*2,若初始知道容量,也会resize为2的幂次大小,然后每次乘以2
loadFactor需要大于0; 0.75是空间与时间的折中,即默认16,当加入对象等于12时会触发扩容;
小于0.75 则会越早扩容,即减少hash冲突,node或链表里的数量,能有效减少遍历的时间,查询的快,但牺牲了空间,即空间换时间。
大于0.75,可以大于1,则说明hash冲突会很严重,但是空间不会浪费,查的时候会慢,时间换空间
最新文章
- python第15天
- vim编辑指令(转)
- 测试架构图 High Level 产品技术(无事来更新,证明这个博客还是Live的)
- Linux给用户添加sudo权限
- C++ 中的类构造函数 &; 析构函数
- 图文详解远程部署ASP.NET MVC 5项目 [转载]
- ubuntu源码安装django
- thinkPHP 中去除URL中的index.php
- CentOS 7快速搭建Nodejs开发环境
- linux 下载并安装Memcache服务器端
- Unity3D 之UGUI 滑动条(Slider)
- 第三章 传奇的开始--Delphi(附读书笔记)
- Android textAppearance的属性设置及TextView属性详解
- IOS6.0 应用内直接下载程序 不需跳转AppStore -b
- 排错-Loadrunner录制打不开浏览器解决方法
- Hadoop数据类型
- JavaScript 使用 mediaDevices API 选择摄像头
- 雷林鹏分享:C# 数组(Array)
- 【Canal源码分析】TableMetaTSDB
- C# WebApi 返回JSON