当前位置:   article > 正文

Hashmap——put()源码分析(JDK1.8)_jdk1,8 hashmap第一次put,容量为

jdk1,8 hashmap第一次put,容量为

在这里插入图片描述
HashMap的Demo:
在这里插入图片描述

  1. 初始化插入第一个元素:
    put()方法:put的第一个参数hash(key)根据key值计算hash。
    在这里插入图片描述
    hash(key)方法:当key为空,返回0;key不为空,返回h为key的hashCode值,异或h右移16位。
    扰动函数:为了保证hash的散列尽量均匀。(将高位和低位进行异或操作,让高位值的不同也能对低位的值产生影响)
    在这里插入图片描述
    putVal()方法:
    在这里插入图片描述
    //第一放数据,创建的Node类型的数组里是空,没有对象,newNode新建一个Node对象把tab[i]放进去。
    在这里插入图片描述
    为什么容量是2的n次幂?可以用与运算代替取模运算。、

使用散列法计算时,因为2的n次幂减一的二进制每一位都是1,这时进行与(&)运算和进行模(%)运算结果是一样的,但使用&运算计算效率更高,因此容量是2的n次幂。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/564406
推荐阅读
相关标签
  

闽ICP备14008679号