有哪些 Java 源代码看了后让你大呼过瘾?
关于 HashMap,我也说一个:我们都知道HashMap的容量必须为2的N次方,但是为什么呢?这个可以从读源码中找到答案。
而只有n为2的幂次方时,i=hash&(n-1)这句话才与hash%n等价,这就解释了为什么HashMap的容量必须为2的幂次方。源码的截图如下。
当时看源码看到这里时,反正比较惊喜。终于不再仅仅知道HashMap的容量必须是2的幂次方,而知道了为什么。
关于 HashMap,我也说一个:我们都知道HashMap的容量必须为2的N次方,但是为什么呢?这个可以从读源码中找到答案。
而只有n为2的幂次方时,i=hash&(n-1)这句话才与hash%n等价,这就解释了为什么HashMap的容量必须为2的幂次方。源码的截图如下。
当时看源码看到这里时,反正比较惊喜。终于不再仅仅知道HashMap的容量必须是2的幂次方,而知道了为什么。