HashMap扩容函数解读
2024-09-30 15:07:38
void resize(int newCapacity)
{
Entry[] oldTable = table;
int oldCapacity = oldTable.length;
if (oldCapacity == MAXIMUM_CAPACITY)
{
threshold = Integer.MAX_VALUE;
return;
} Entry[] newTable = new Entry[newCapacity];
transfer(newTable, initHashSeedAsNeeded(newCapacity));
table = newTable;
threshold = (int) Math.min(newCapacity * loadFactor, MAXIMUM_CAPACITY + 1);
} /**
* Transfers all entries from current table to newTable.
*/
void transfer(Entry[] newTable, boolean rehash)
{
int newCapacity = newTable.length;
for (Entry<K, V> e : table)
{
while (null != e)
{
Entry<K, V> next = e.next;
if (rehash)
{
e.hash = null == e.key ? 0 : hash(e.key);
}
int i = indexFor(e.hash, newCapacity);
e.next = newTable[i];
newTable[i] = e;
e = next;
}
}
}
最新文章
- 我的ef连接mysql之旅
- C#如何使用和开发自定义配置节
- ODBC具体使用
- surfaceView和Camera配合进行摄像头的预览
- Annotation 与 HttpClient(5)--Annotation HttpClient
- javascript 学习笔记(权威指南)
- xml校验问题
- 如何在鼠标hover时改变标注的样式
- Pandas库的使用--Series
- COSO企业风险管理框架2017版发布!看看有哪些变化?
- mysql学习3
- temp--内蒙农信出差
- lnmp或者lamp环境一键安装
- Eclipse 汉化的和修改字体的方法
- notepad++ 文本替换功能,解决excel批量修改数据库的数据操作
- Vue图片懒加载之lazyload插件使用
- Oracle 11g R2 for Win7旗舰版(64位)- 安装
- Ubuntu12.04设置屏幕分辨率
- 用 webpack 构建 node 后端代码,使其支持 js 新特性并实现热重载
- JAVA优化技巧分享 让游戏更加的流畅
热门文章
- 机器学习/逻辑回归(logistic regression)/--附python代码
- 以太坊remix IDE安装步骤
- HDU 4745 Two Rabbits(最长回文子序列)(2013 ACM/ICPC Asia Regional Hangzhou Online)
- java script 学习
- lintcode-106-排序列表转换为二分查找树
- PAT 1045 快速排序
- 基于C#的PISDK研究(理论)
- 服务器下面的WEB-INF 不能直接访问,可以通过servlet进行访问
- P1268 树的重量
- 【BZOJ 4034】[HAOI2015]树上操作 差分+dfs序+树状数组