这才是正确地初始化只有一个元素的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)