Java-HashMap的loadFactor

1,問:HashMap的loadFactor爲什麼是0.75?而不是0.5?

答:因爲如果是0.5的話,每次達到容量的一半就要擴容,默認容量是16,達到8就擴容成32,達到16就擴容,到後來使用的空間和未使用的差額會越來越大,空間利用率不高。

2,問:HashMap的loadFactor爲什麼是0.75?而不是1?

答:如果是1,那意味着每次空間使用完畢才擴容,在一定程度上會增加put時候的時間。

3,問:HashMap的loadFactor爲什麼是0.75?而不是0.74或者0.73?

答:這是個經驗值,開發人員在工程實踐中這個數字是對空間和時間相對都比較友好的一個值;

最好的loadfactor的值爲log(2),約等於0.693,可能小於0.75 大於等於log(2)的factor都能提供更好的性能;

再說capacity是2的冪,capacity * 0.75能夠得到一個整數,例如16*0.75=12。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章