HashMap初始容量問題思考

在前幾天面試中軟的時候,面試官問了我這麼一個問題:如果已知容量爲100的話。你怎麼處理?

首先一些必備的基礎知識

  1. 位運算 index=HashCode(key)*(length-1) 
  2. 默認長度16 ,每次擴容成自己的兩倍 
  3. ReSize>=Capacity*LoadFactor ,其中LoadFactor默認爲0.75f。

那現在問題來了,如果按照16來算,16、32、64.....   但是Resize是麻煩的(Resize包括擴容和ReHash),

那初始指定Capacity爲多少合適呢?

100=Capacity*LoadFactor,Capacity得出爲134(133.33取整)然後HashMap長度要爲2的冪,於是選擇128。

事情還沒有結束,將128代入上式可以很輕易的得出LoadFactor約爲0.78,大於了默認的0.75,所以此時要進行一次ReSize動作,還不如直接定位256。

Over

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