美文网首页
hashmap的初始大小计算

hashmap的初始大小计算

作者: 胡椒粉儿007 | 来源:发表于2020-09-13 19:57 被阅读0次

    HashMap objectObjectHashMap =new HashMap<>(10);

    知道当你在写这行代码时,这个hashmap的初始大小是多少吗?

    10?还是16?接下来上源码

    static final int tableSizeFor(int cap) {

        int n = cap -1;

        n |= n >>>1;

        n |= n >>>2;

        n |= n >>>4;

        n |= n >>>8;

        n |= n >>>16;

        return (n <0) ?1 : (n >=MAXIMUM_CAPACITY) ?MAXIMUM_CAPACITY : n +1;

    }

    这个方法通过位移结合位运算来实现,hashmap的长度设置的

    知识点:

    |=:两个二进制对应位都为0时,结果等于0,否则结果等于1

    &=:两个二进制的对应位都为1时,结果为1,否则结果等于0

    ^=:两个二进制的对应位相同,结果为0,否则结果为1

    >>> 2 :无符号右移动 2位

    左移没有<<<运算符

    负数的原码为其绝对值的原码的最高位表示为1,

    取反码时最高位不变其他位进行取反

    补码是反码加1

    计算机中,负数都是按照其补码进行计算

    相关文章

      网友评论

          本文标题:hashmap的初始大小计算

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