- 底层数据结构,1.7和1.8有什么区别
1.7:数组+链表
1.8:数组+(链表 | 红黑树) - 为什么要用红黑树
当链表过长时查询效率太低,树化可以提高查询效率 - 为什么不是一开始就用树,而是达到一定条件再树化
TreeNode占用空间比普通链表占用空间大 - 树化阈值为何是8
为了让树化概率更小,因为正常情况下链表长度达到8几乎是没有的 - 何时会树化
链表长度达到8且数组长度达到64 - 何时为退化为链表
- 数组扩容后拆分树时,如果树元素个数<=6,则会退化为链表
- 删除树元素时,如果删除之前树的根节点、左孩子、右孩子或左孙子之一有一个为null,则会退化为链表。