美文网首页
哈希表 当拉链长度超过阀值时,会有什么优化

哈希表 当拉链长度超过阀值时,会有什么优化

作者: natewang | 来源:发表于2018-09-25 21:44 被阅读29次

HashMap采用位桶+链表+红黑树实现,当链表长度超过阈值(8),时,将链表转换为红黑树,这样大大减少了查找时间。

一直到JDK7为止,HashMap的结构都是这么简单,基于一个数组以及多个链表的实现,hash值冲突的时候,就将对应节点以链表的形式存储。

这样子的HashMap性能上就抱有一定疑问,如果说成百上千个节点在hash时发生碰撞,存储一个链表中,那么如果要查找其中一个节点,那就不可避免的花费O(N)的查找时间,这将是多么大的性能损失。这个问题终于在JDK8中得到了解决。再最坏的情况下,链表查找的时间复杂度为O(n),而红黑树一直是O(logn),这样会提高HashMap的效率。

https://blog.csdn.net/hefenglian/article/details/79763634

相关文章

网友评论

      本文标题:哈希表 当拉链长度超过阀值时,会有什么优化

      本文链接:https://www.haomeiwen.com/subject/xjlroftx.html