这才是正确地初始化只有一个元素的HashMap的方式
有时候我们需要一个只放一个元素的Map。 可能一开始是这样的
|
|
上面这种写法相当于
|
|
这种写法正确吗?
我们知道threshold = capacity * loadFactor
让我们看看HashMap中的resize方法
的这部分代码
|
|
所以上面这种写法,在putVal开始的时候会调用resize(),导致threshold ==0(1*0.75强转int),然后在putVal的结束的时候
|
|
1 > 0 ,所以会再次调用resize(),这样Map的这个table长度就变成2了,但是Map此时是只有一个元素的。 但是,用这种方式就没问题了
|
|
当然,有时候可以用Collections.singletonMap
(一个不可变的Map,只包含一个Key和一个Value)