原文:面试题:为什么 Map 桶中超过 8 个才转为红黑树?

为什么 Map 桶中超过 个才转为红黑树 JDK . 的 HashMap 和 ConcurrentHashMap 都有这样一个特点:最开始的 Map 是空的,因为里面没有任何元素,往里放元素时会计算 hash 值,计算之后,第 个 value 会首先占用一个桶 也称为槽点 位置,后续如果经过计算发现需要落到同一个桶中,那么便会使用链表的形式往后延长,俗称 拉链法 ,如图所示: 当链表长度大于或等于 ...

2021-01-13 15:31 2 377 推荐指数:

查看详情

阿里面试题:为什么Map个数超过8才转为

这是笔者面试阿里时,被问及的一个问题,应该不少人看到这个问题都会一面懵逼。因为,大部分的文章都是分析链表是怎么转换成的,但是并没有说明为什么当链表长度为8的时候才做转换动作。笔者第一反应也是一样,只能初略的猜测是因为时间和空间的权衡。 要弄明白这个问题,我们首先要明白为什么要转换,这个问题 ...

Tue Mar 26 18:51:00 CST 2019 2 3040
面试题——轻松搞定面试问题

版权所有,转载请注明出处,谢谢!http://blog.csdn.net/silangquan/article/details/18655795 连续两次面试都问到了,关键两次都没有答好,这次就完整地来学习整理一下。 没有学习过的同学请参考: << ...

Wed Apr 22 01:29:00 CST 2015 2 29054
Java面试题原理

原理: 每个节点都只能是红色或黑色的; 根节点是黑色的; 每个叶节点(空节点)是黑色的; 如果一个节点是红色的,那么他的子节点都是黑色的; 从任意一个节点到其每个子节点的路径都有相同数目的黑色节点; ...

Sat Feb 23 11:01:00 CST 2019 0 1212
面试题:为什么用不用普通的AVL

在Jdk1.8版本后,Java对HashMap做了改进,在链表长度大于8的时候,将后面的数据由链表改为了存在,以加快检索速度。 有疑问为什么是使用而不是AVL,AVL是完全平衡二叉树阿? 最主要的一点是: 在CurrentHashMap是加锁了的,实际上是读写锁,如果写 ...

Tue Jan 19 22:42:00 CST 2021 0 439
面试常考问题

转载自http://blog.csdn.net/silangquan/article/details/18655795 没有学习过的同学请参考: <<Introduction to Algorithms>> Chapter 13 Red-Black ...

Sat Oct 03 23:42:00 CST 2015 0 7580
为什么HashMap(链表)的长度超过8会转换成

百度了一下,感觉能说清楚的并不多,所以在此记录一下。 首先说一说转换为的必要性: 的插入、删除和遍历的最坏时间复杂度都是log(n), 因此,意外的情况或者恶意使用下导致hashCode()方法的返回值很差时, 性能的下降将会是"优雅"的,只要Key具有可比性。 但由于 ...

Sun Apr 21 06:09:00 CST 2019 0 2026
为什么HashMap(链表)的长度超过8才会转换成

百度了一下,感觉能说清楚的并不多,所以在此记录一下。 首先说一说转换为的必要性:的插入、删除和遍历的最坏时间复杂度都是log(n),因此,意外的情况或者恶意使用下导致hashCode()方法的返回值很差时,性能的下降将会是"优雅"的,只要Key具有可比性。 但由于TreeNodes ...

Wed Jun 26 18:49:00 CST 2019 0 3661
map的实现--

一、什么是??? 首先是一棵搜索二叉树,的每一个结点的颜色不是黑色就是红色。它的特性如下: 1、根节点是黑色 2、每一个结点不是黑色就是红色 3、不能有连续的两个红色结点 4、从任意一个结点出发,到后代中空指针的路径 ...

Sun Jun 24 07:54:00 CST 2018 0 911
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM