HashMap深入分析

底层实现数据结构

1.7数组+链表

思考:为什么不用双向链表

 

1.8+的数组+链表+红黑树

 

一些重要的变量

//默认初始容量16
static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; 
//容量最大值
static final int MAXIMUM_CAPACITY = 1 << 30;
//默认加载因子0.75
static final float DEFAULT_LOAD_FACTOR = 0.75f;
//树化的阈值,当桶中链表节点数大于8时,将链表转换为红黑树
static final int TREEIFY_THRESHOLD = 8;
//红黑树退化为链表的阈值,当桶中红黑树节点数小于6时,将红黑树转换为链表
static final int UNTREEIFY_THRESHOLD = 6;
//最小的树化容量,进行树化的时候,还有一次判断,只有键值对数量大于64时才会发生转换,
//这是为了避免在哈希表建立初期,多个键值对恰好被放入了同一个链表而导致不必要的转化
static final int MIN_TREEIFY_CAPACITY = 64;

 


待续~~~

 

参考:https://blog.csdn.net/samniwu/article/details/90550196

posted @ 2020-03-18 00:17  架构之路  阅读(145)  评论(0编辑  收藏  举报
========================================================================== 如果您觉得这篇文章对你有帮助,可以【关注我】或者【点赞】,希望我们一起在架构的路上,并肩齐行 ==========================================================================