• tableSizeFor


    HashMap

    tableSizeFor()

    /**
          Returns a power of two size for the given target capacity.
          1.(不考虑大于最大容量的情况)返回大于输入参数且最近的2的整数次幂的数。比如10,则返回16.
          2. 该算法让最高位的1后面的位全变为1;最后再让结果n+1,即得到了2的整数次幂的值了。
          3. >>>表示无符号右移,也叫逻辑右移,即若该数为正,则高位补0.
             比如7的二进制是111,7>>>2表示右移2位,变成001,即为1.
    */
        static final int MAXIMUM_CAPACITY = 1 << 30;
        static final int tableSizeFor(int cap) {
            int n = cap - 1;
            n |= n >>> 1;  //相当于 n = ( 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; //最后算+1
        }
    
  • 相关阅读:
    反向映射和写时复制
    内存分析的好blog
    minicom使用
    tee的妙用
    网络带宽
    mem analyse
    linux 应用层常用API/命令
    ubuntu 库依赖问题
    Python基础学习笔记(一:hello world)
    第7章 取消与关闭
  • 原文地址:https://www.cnblogs.com/huyuqing/p/14368178.html
Copyright © 2020-2023  润新知