标签:冲突 lock 形式 阈值 提高 理论 大于 block blog
理论概念
JDK1.8链表变红黑树的情况
? 当数组阈值大于8,长度小于64时,链表不会变红黑树,而是数组进行扩容,一般为原数组的二倍。只有当阈值大于8,数组长度大于64时链表才会变红黑树。
? 这样做的目的是因为此时的数组长度较小,尽量避开红黑树结构,这种情况下变为红黑树结构,反而会降低效率,因为红黑树需要进行左旋,右旋,变色这些操作来保持平衡 。同时数组长度小于64时,搜索时间相对要快些。所以综上所述为了提高性能和减少搜索时间,底层在阈值大于8并且数组长度大于64时,链表才转换为红黑树。
? 当阈值大于8并且数组长度大于64时,虽然增加了红黑树作为底层数据结构,结构变得复杂了,但效率变的更高效。
总结
1.存取无序的
2.键和值位置都可以是null,但是键位置只能是一个null
3.键位置是唯一的,底层的数据结构控制键的
4.jdk1.8前数据结构是:**数组 + 链表 ** jdk1.8之后是 : 数组 + 链表 + 红黑树
5.阈值(边界值) > 8 并且数组长度大于64,才将链表转换为红黑树,变为红黑树的目的是为了高效的查询。
持续更新中
标签:冲突 lock 形式 阈值 提高 理论 大于 block blog
原文地址:https://www.cnblogs.com/leiger/p/13255137.html