答
这就是一个考量大小与性能之后的经验值。
为什么
使用移位替代了取余操作,增强性能,但同时带来了一个限制,容器大小必须是2的n次方才能满足移位取余操作。
如果初始大小设置到8或者以下,那么在写入6条数据就需要发生扩容了,一般页面显示都为10条数据,也就是一定会扩容,所以大小为16可以避免发生一次扩容。
当然以上是个人看法。
参考资料
全网把Map中的hash()分析的最透彻的文章,别无二家。-HollisChuang's Blog
这就是一个考量大小与性能之后的经验值。
使用移位替代了取余操作,增强性能,但同时带来了一个限制,容器大小必须是2的n次方才能满足移位取余操作。
如果初始大小设置到8或者以下,那么在写入6条数据就需要发生扩容了,一般页面显示都为10条数据,也就是一定会扩容,所以大小为16可以避免发生一次扩容。
当然以上是个人看法。
全网把Map中的hash()分析的最透彻的文章,别无二家。-HollisChuang's Blog