Java 为什么HashMap将容量作为容量<<;=1.

Java 为什么HashMap将容量作为容量<<;=1.,java,hashmap,Java,Hashmap,我想知道为什么HashMap的大小总是2的倍数,而其他集合的大小却不是2的倍数 这背后的原因是什么 感谢事实上,HashMap的负载始终超过75%,HashMap的大小将增加一倍。这就是为什么hashmap大小总是2的幂。 您可能对本文感兴趣: 那么为什么这不适用于其他集合(如hashtable等),它们的大小在加载因子通过时增加了一倍。事实上,这是相同的,只是HashMap的默认初始大小已经是2的幂,所以您可以得到大小=(2^DepSize)*2^(something)=2^(K)。但您可以指

我想知道为什么
HashMap
的大小总是2的倍数,而其他集合的大小却不是2的倍数

这背后的原因是什么


感谢

事实上,HashMap的负载始终超过75%,HashMap的大小将增加一倍。这就是为什么hashmap大小总是2的幂。 您可能对本文感兴趣:

那么为什么这不适用于其他集合(如hashtable等),它们的大小在加载因子通过时增加了一倍。事实上,这是相同的,只是HashMap的默认初始大小已经是2的幂,所以您可以得到大小=(2^DepSize)*2^(something)=2^(K)。但您可以指定初始大小。所以,即使对于HashMap,你也可以有一个不是2的幂的大小,但它总是类似于K*2^的东西。对不起,Luc,但我的问题是,还有其他集合,当传递的负载因子增加一倍时,它们的大小会增加一倍,但它们不会像HashMap一样,始终使用2的幂的容量?嘿,Luc!终于明白了。Tnx
HashMap
实际上在内部进行了一些计算,以使用两个容量中大于所需容量的最小幂。所以你实际上总是有两个容量的幂