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;
待续~~~
==========================================================================
如果您觉得这篇文章对你有帮助,可以【关注我】或者【点赞】,希望我们一起在架构的路上,并肩齐行
==========================================================================
==========================================================================