美文网首页
HashMap-源码分析

HashMap-源码分析

作者: 空城EN | 来源:发表于2018-03-21 21:53 被阅读0次

    一个菜鸟的源码之路

    测试代码

    和之前分析的一样,我们来从初始化,加值,扩容这三个步骤来说。

    1.new初始化



    在这里初始化了一个值,叫负载因子,具体的作用后面再说。

    2.put加值

    put函数就会直接调用putVal()


    再来看下hash()的实现,发现这个函数就是用来求传入值的hashcode值的异或运算结果。具体作用主要是,来将一个一个对象进行区域划分,减少查找难度

    然后,来分析下putVal()函数。这部分比较长,我们一步一步来分析。

    首先会到resize()函数,我们来看下resize()函数。发现会返回一个16长度的Node数组

    再来看putVal()函数。然后就会将保存了key,value的Node节点赋给tab[i]。

    3.扩容

    之前说到,最初是初始化一个长度为16的数组,当长度超过时,会咋样呢。这时,我们就要回过头来看resize()函数


    此时,我们知道了负载因子的作用。每当存储的键值对的长度大于负载因子和默认大小的乘积时,会自动扩容为原来的一倍

    相关文章

      网友评论

          本文标题:HashMap-源码分析

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