根据阿里巴巴Java开发手册上建议HashMap初始化时设置已知的大小,如果不超过16个,那么设置成默认大小16:
集合初始化时, 指定集合初始值大小。
说明: HashMap使用HashMap(int initialCapacity)初始化,
正例:initialCapacity = (需要存储的元素个数 / 负载因子) + 1。注意负载因子(即loader factor)默认为0.75, 如果暂时无法确定初始值大小,请设置为16(即默认值)。
反例:HashMap需要放置1024个元素,由于没有设置容量初始大小,随着元素不断增加,容量7次被迫扩大,resize需要重建hash表,严重影响性能。
而对于为什么负载因子是0.75,答案可以在《数据结构与算法分析 Java语言描述》的散列章节中找到
参考:
http://blog.csdn.net/gaopu12345/article/details/50831631
http://blog.csdn.net/ghsau/article/details/16843543
http://blog.csdn.net/ghsau/article/details/16890151
http://republicw.iteye.com/blog/1218692
http://www.cnblogs.com/skywang12345/p/3310835.html
http://blog.csdn.net/ls5718/article/details/51785322
https://www.cnblogs.com/peizhe123/p/5790252.html
https://www.zhihu.com/question/19673196
http://blog.csdn.net/a_long_/article/details/51594159
https://stackoverflow.com/questions/434989/hashmap-initialization-parameters-load-initialcapacity