hashmap为什么用红黑二叉树而不用B+树

通过查看我的mysql底层为什么用B+树做索引存储https://www.jianshu.com/p/99aabf9611a3
能够了解B+树查询效率比红黑二叉树更好,但是为什么hashmap底层要用红黑二叉树存储,而不用B+树存储呢,其实原因很简单


B+树在数据库中被应用的原因就是B+树比B树更加“矮胖”,B+树的非叶子结点不存储数据,所以每个结点能存储的关键字更多。所以B+树更能应对大量数据的情况。
jdk1.7中的HashMap本来是数组+链表的形式,链表由于其查找慢的特点,所以需要被查找效率更高的树结构来替换。
如果用B+树的话,在数据量不是很多的情况下,数据都会“挤在”一个结点里面。这个时候遍历效率就退化成了链表。
比如我们设置的Max.Degree=7,如果有6条数据,那样就又变成了数组


image.png

推荐阅读更多精彩内容