/**
* The default initial capacity - MUST be a power of two.
*/
static final int DEFAULT_INITIAL_CAPACITY = 1 << 4;
班级java.util.Map
有一个static
成员DEFAULT_INITIAL_CAPACITY
,其中的int
值按位运算1<<4
计算,这意味着16
我的问题是他们为什么分配这样的价值。使用按位运算符分配值而不是直接分配int
值有什么好处?
答案 0 :(得分:3)
Javadoc说默认的初始容量&#34;必须是两个&#34;的幂。
通过将作业写成左移,它鼓励未来的开发人员问自己&#34;为什么他们这样写呢?&#34;因此,阅读评论,同时也使得更容易将值更改为不同的2的幂。
答案 1 :(得分:2)
这是我的猜测:
java HashMap的容量总是应该是2的幂(超出本问题范围的原因)。因此,默认初始容量必须是2的幂。 16是2的幂,1&lt;&lt;图4清楚地向可能想要修改代码的任何人说明了这一限制。