HashMap是链表大于8的时候会树化?还是大于等于8的时候会树化?

在HashMap中,数组大于等于64的时候,是链表大于8的时候会树化?还是大于等于8的时候会树化?
对于该问题争议还是蛮大的,有些小伙伴自己去看源码,发现源码写的,跟特喵故意让我们看不懂似的,乱七八糟滴。
那我们既然看不懂源码,那咱笨有笨的法子,自己直接来证实一下!
代码如下:HashMap初始大小定义为64,因为数组大于等于64的时候且链表长度大于8的时候链表才会进行树化。此处我一共找了9个key,在数组为64的大小时,这9个key会被存放在同一个索引下。我们可以先put8个key,并在输出语句处以及源码(树化方法处)打上断点。要是停在了源码的断点,意思不就是链表等于8的时候它就要树化了吗。要是停在了输出语句的断点,那不就是没有树化吗。经过运行,断点停在了输出语句处,放行后运行结束。说明等于8的时候不会进行树化!
在这里插入图片描述在这里插入图片描述
同样在这两个地方打上断点,不同的是加上一个key,即9个key,这个时候看看会停在哪个断点。
在这里插入图片描述
运行后发现停在了源码的断点。那结论不就出来了吗?即大于8的时候才会树化。
在这里插入图片描述可能有些小伙伴又有疑问了,你怎么知道这九个key会放在一个索引上呢?那我懒得叼你,只能给你看下这个图了:
在这里插入图片描述
当然,小伙伴们最好自己试一下,不仅仅是这个问题,所有具有争议的问题都是,不自己试一下,永远不知道自己背的到底是对是错。就像我,我一直以为等于8就会树化,毕竟源码写的我看着是真心烦

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值