常見的就不寫了,寫一些深入的東西。
HashMap
裝載因子
- 默認爲0.75,如果設置太大,空間利用率高了,但是桶中的鍵碰撞的機率就會越大,同一個桶可能會存放好幾個value值,這樣就添加了搜索的時間。
- 如果設置太小,那麼桶的使用率將會很低,浪費內存空間。
桶的默認大小
- 爲什麼爲16,桶的大小爲2的冪,即在二進制下的情況下len-1全爲1,hashmap在求桶下標的時候計算公式爲
index = e.hash & (newCap - 1)
,這樣可以更均勻分佈hash函數。
ConcurrentHashMap
場景題
chm在執行clear操作時,同時可能存在併發put時,如何保證clear方法安全?
這道題還沒想到答案,先記錄一下