ArrayList && HashMap擴容策略

ArrayList擴容策略:
默認10 擴容時是base + base/2, 即10 15 22 33 49...
擴容時不安全:grow方法擴容時,賦值 elementData = Arrays.copyOf(elementData, newCapacity)時,若兩個線程都進入這個地方,會致使快的賦值被慢的覆蓋,致使跳號node


HashMap擴容策略:
容量默認16 loadFactor默認0.75 必須大於0
容量擴容是16*2,若初始知道容量,也會resize爲2的冪次大小,而後每次乘以2
loadFactor須要大於0; 0.75是空間與時間的折中,即默認16,當加入對象等於12時會觸發擴容;
小於0.75 則會越早擴容,即減小hash衝突,node或鏈表裏的數量,能有效減小遍歷的時間,查詢的快,但犧牲了空間,即空間換時間。
大於0.75,能夠大於1,則說明hash衝突會很嚴重,可是空間不會浪費,查的時候會慢,時間換空間安全

相關文章
相關標籤/搜索