hashmap选择红黑树,为啥hashmap不直接采用红黑树,为什么达到8个才转红黑树
为什么直接采用红黑树
因为红黑树需要进行左旋,右旋操作, 而单链表不需要,
主要考察链表和红黑树对比:
1)如果元素小于8个,查询成本高,新增成本低
2)如果元素大于8个,查询成本低,新增成本高HashMap在jdk1.8之后引入了红黑树的概念,为什么采用6和8进行红黑树和链表转化
表示若桶中链表元素超过8时,会自动转化成红黑树;若桶中元素小于等于6时,树结构还原成链表形式。
1)原因:
红黑树的平均查找长度是log(n),长度为8,查找长度为log(8)=3,链表的平均查找长度为n/2,当长度为8时,平均查找长度为8/2=4,这才有转换成树的必要;链表长度如果是小于等于6,6/2=3,虽然速度也很快的,但是转化为树结构和生成树的时间并不会太短。2)选择6和8的原因是:
中间有个差值7可以防止链表和树之间频繁的转换。假设一下,如果设计成链表个数超过8则链表转换成树结构,链表个数小于8则树结构转换成链表,如果一个HashMap不停的插入、删除元素,链表个数在8左右徘徊,就会频繁的发生树转链表、链表转树,效率会很低。
原文作者:宁为百夫长
原文地址: https://blog.csdn.net/qshuangshuang/article/details/106789930
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/qshuangshuang/article/details/106789930
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
相关文章