目录普通人的简单粗暴方式示例代码问题大神的实现移位的思想全过程示意图初始值右移一位+或运算右移二位+或运算右移四位+或运算右移八位+或运算右移十六位+或运算结果+1初始容量-1总结 在看HashMap源码时,注意到一个问题,容量必须是2的整数幂,为了保证这一点,专门给出了一个巧妙而
最近在看一些集合的源码,看到HashMap感觉用到了很多移位运算的技巧,看了好一会儿才明白,记一下以免以后再忘了 后面有时间会整理完整的源码 HashMap中有这样一段代码,当初始化HashMap时,如果指定了初始容量initialCapacity,由于哈希桶的数目必须是2的n次幂,因此要把initialCapacity转
https://blog.csdn.net/huzhigenlaohu/article/details/51802457
ConcurrentHashMap和HashMap有如下方法 inttableSizeFor(int c) //功能:输入低于最大容量的数c,返回大于等于且最接近c的2的幂次数。 源码: private static final int MAXIMUM_CAPACITY = 1 << 30; private static final int tableSizeFor(int c) { int n = c - 1; n