2020-04-06:为什么HashMap不一直使用红黑树?

红黑树的阈值是8,当链表大于等于8时链表变成了红黑树结构,大大减少了查找的时间。

当长度低于6时会由红黑树转成链表,TreeNodes占用空间是普通Nodes的两倍,所以只有当bin包含足够多的节点时才会转成TreeNodes,而是否足够多就是由TREEIFY_THRESHOLD的值决定的,当bin中节点数变少时,又会转成普通的bin,这样就解析了为什么不是一开始就将其转换为TreeNodes,而是需要一定节点数才转为TreeNodes,说白了就是trade-off,空间和时间的权衡。

posted @ 2020-08-05 15:37  福大大架构师每日一题  阅读(1042)  评论(0编辑  收藏  举报