为什么hashMap的容量扩容时一定是2的幂次 用户7148667373592 2021-02-08 201 阅读1分钟 static int indexFor(int h, int length) {return h & (length-1);} 这是源码,返回元素在hash表的位置,h是hash,length是容量 空间浪费 如果容量不是2的幂次,length-1将不会是......1111的这种形式,而是......1010这种形式,hash表的一些位置永远不会存值,空间浪费。 减少hash碰撞 如果容量不是2的幂次,一些空间不被使用,存放更密集,更加容易导致hash碰撞,降低查询效率