HashMap到底需不需要更改初始容量

325 阅读1分钟


1、如果不超过12个键值对,可以不设置,HashMap的机制是:当内部维护的哈希表的容量达到75%时,触发rehash。所以初始化容量要设置成num/3*4,而不是num。阿里的java开发手册里也写了这条,而且阿里为了抵消舍入误差,建议初始化容量设置为num/3*4+1

2、只能说阿里和美团的思路不一样,阿里可能偏重于牺牲CPU换内存(毕竟CPU很少会跑满,但内存很容易满),而美团更偏重于牺牲内存换CPU

3、以下是测试的代码测试的时候并不能说明初始化值能节省多少时间,但是没有用参数进行实践这个也不好说,总的来说由于没有设置容量初始大小,随着元素不断增加,容量7次被迫扩大,resize需要重建hash表,会严重影响性能,所以我们还是要给HashMap一个初始值。