栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

HashMap的扩容resize

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

HashMap的扩容resize

三情况会扩容:

1、第一次put元素创建数组的时候。

2、插入节点后元素个数大于N*负载因子的时候。

3、数组小于64但是链表节点大于8。

大白话版本:

Java数组是不可变的,先创建一个2倍的数组(用n << 1)左移一位的优化计算方式。

把原数组上的节点放在新数组上。根据规律rehash优化,扩容后节点要么在原位置,要么在原来的位置+数组原长度  原来的位置连接在low链上,需要移动 i+n的在High链上。把链表挂在新数组上。

原来的Index可能是树类型,移动后长度可能小于6(hashmap)有个常量,如果长度小于6就会把树转回链表。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/999719.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号