HashMap底层原理
hashMap为什么链表长度为8才转换?
转换概率 链表查找速度和数组速度在8开始有差异 6个才还原,主要为了减少变换频率
hashMap为什么不使用AVL?
AVL树就是平衡树 B树是平衡树 B+树是多路平衡树、数据在叶子节点链表上 红黑树是二叉搜索树 hashmap的TreeMap是红黑树
原因
红黑树为了插入时减少旋转放弃平衡,平衡二叉树为了平衡插入时增加旋转次数 blog.csdn.net/theshowlen/… zhidao.baidu.com/question/90…
红黑树不追求"完全平衡", 而AVL是严格平衡树(B树),因此在增加或者删除节点的时候,根据不同情况,旋转的次数比红黑树要多。
红黑树最大路劲高不超过最短路径的2倍。 先考虑查找速度,后再考虑变换,红黑树时个不错的折中选择
红黑树在数据量大就会高瘦,很深,深的时候就是数据量大的时候,查找速度慢。 如果数据量多才会用avl平衡树=B树,B树是多叉的,所以数据量大会横向扩展,深度小,查找速度相对快。部分平衡
所以数据库用mysql用B+树多平衡树。 HashMap少量数据,少量冲突,用红黑。量少,占用空间少,插入速度快,查找速度不平均