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

HashMap底层实现原理

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

HashMap底层实现原理

目录

看了不少大佬写的文章,在这里简要总结一下HashMap底层的原理:

什么是红黑树?红黑树的特点:

HashMap的定义中有几个重要的属性


看了不少大佬写的文章,在这里简要总结一下HashMap底层的原理:

jdk1.8之前:HashMap通过数组+链表实现

jdk1.8开始:HashMap通过数组+链表+红黑树实现

什么是红黑树?

红黑树的特点:

1、根节点和叶子节点为黑色

2、每个节点要么是红色,要么是黑色

3、从任意节点到其可达的叶子结点上的黑色节点数量相等

4、红色节点都是由黑色节点分隔开来的,不存在两个红色节点连在一起的情况

HashMap的定义中的几个重要的变量

1、初始容量:内部数组(哈希桶)的默认长度,默认为16

static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;

2、哈希桶的最大容量:内部数组(哈希桶)的最大长度2^30

static final int MAXIMUM_CAPACITY = 1 << 30;

3、默认加载因子:数组长度达到总长度的0.75时自动扩容,第1次扩容为数组长度为16*0.75=12时

static final float DEFAULT_LOAD_FACTOR = 0.75f;

4、树化的最小数组长度:当哈希桶长度达到64,并且链表长度达到8时自动转为红黑树

static final int MIN_TREEIFY_CAPACITY = 64;

5、树化的阈值:当哈希桶的链表长度达到8时自动转为红黑树

static final int TREEIFY_THRESHOLD = 8;

6、红黑树退化为链表的阈值:当红黑树的节点减少到6时会自动转回链表

static final int UNTREEIFY_THRESHOLD = 6;

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

版权所有 (c)2021-2022 wk8.com.cn

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