0.75这个数字其实是一个时间和空间之间的平衡点。
负载因子决定了什么时候会触发扩容。
HashMap的扩容阈值=容量✖️负载因子。
举个栗子:
比如容量是16,负载因子是0.75,这样存到第12个元素的时候就会触发扩容;
那如果负载因子改成0.5,这样存到第8个元素就会触发扩容;
如果负载因子改成1,那这样只有存满16个元素才会触发扩容。
所以,
负载因子如果设置的太低,桶里的元素就会越稀疏,这样虽然查找速度会更快,但是会造成内存空间的浪费;
负载因子如果设置的太高的话,桶里的元素就会越密集,虽然节省空间,但是冲突也会变多,这样查找就会变慢。
0.75是一个折中的值,既不会让数组太过空旷,也不会让链表太长,在大多数场景下都能保持不错的性能。