HashMap的负载因子为什么是0.75
2020-03-09 本文已影响0人
写代码的杰西
HashMap的负载因子是指,达到容器的最大容量*负载因子,容器就扩容。
那么负载因子为什么不设置成1呢?这样空间利用的更充分。
原因是如果设置成1。这样会发生大量的hash碰撞。有些位置的链表会很长,就不利于查询。省空间而费时间。
如果设置成0.5,hash碰撞的几率小了很多,但是会频繁扩容,费空间而省时间。
大佬们经过研究,0.75的数值比较均衡,在空间和时间做了个取舍。
HashMap的负载因子是指,达到容器的最大容量*负载因子,容器就扩容。
那么负载因子为什么不设置成1呢?这样空间利用的更充分。
原因是如果设置成1。这样会发生大量的hash碰撞。有些位置的链表会很长,就不利于查询。省空间而费时间。
如果设置成0.5,hash碰撞的几率小了很多,但是会频繁扩容,费空间而省时间。
大佬们经过研究,0.75的数值比较均衡,在空间和时间做了个取舍。