为什么HashMap的容量必须为大于该容量的最小的2的n次幂

调用HashMap的put方法将一个键值对存到map中,会先计算key的散列值。该散列值是int基本类型,int的范围为~,用这个散列值来确定map的数组下标(jdk8之前HashMap的数据结构是数组+链表,jdk8之后又加上了红黑树)。但这散列值太大,map的容量不可能这么大,会内存溢出。所以需要通过一种方式将这个key的散列值与map的容量对应起来。比如说将散列值与map容量取模,这样得到的
相关文章
相关标签/搜索