糞發塗牆 4123

2022-01-21 07:53:43 字數 883 閱讀 6025

void transfer(entry newtable, boolean

rehash)

int i =indexfor(e.hash, newcapacity);

e.next =newtable[i];

newtable[i] =e;

e =next;

} }

}

當hashmap中的元素越來越多的時候,

hash

衝突的機率也就越來越高,因為陣列的長度是固定的。所以為了提高查詢的效率,就要對

hashmap

的陣列進行擴容,陣列擴容這個操作也會出現在

arraylist

中,這是乙個常用的操作,而在

hashmap

陣列擴容之後,最消耗效能的點就出現了:原陣列中的資料必須重新計算其在新陣列中的位置,並放進去,這就是

resize

。那麼hashmap什麼時候進行擴容呢?當

hashmap

中的元素個數超過陣列大小

*loadfactor

時,就會進行陣列擴容,

loadfactor

的預設值為

0.75

,這是乙個折中的取值。也就是說,預設情況下,陣列大小為

16,那麼當

hashmap

中元素個數超過

16*0.75=12

的時候,就把陣列的大小擴充套件為

2*16=32

,即擴大一倍,然後重新計算每個元素在陣列中的位置,而這是乙個非常消耗效能的操作,所以如果我們已經預知

hashmap

中元素的個數,那麼預設元素的個數能夠有效的提高

hashmap

的效能。

決定糞發塗牆

今天是國慶的第四天,晃晃悠悠又過去了。前天校慶,昨天上午被聖經mm忽悠聽sj去了。居然還有個天大化工的在那,而且貌似要皈依耶穌門了。這傢伙也要考研了,還挺強的,打算考中科院。政治已經看一遍了,mmd,我還動也沒動。今天上網看到乙個programmer的 感覺找到學習的目標了。都是20出頭的青年,人家...

動態規劃 顏料塗牆問題

有一面長度為n n 10000 的牆,如果要將每單位長度的牆塗上紅 綠 籃其中的一種顏色,而且紅色牆右邊不能緊鄰綠色的牆,綠色的牆右邊不能緊鄰藍色的牆,請問有幾種塗色的方法?0代表紅色,1代表綠色,2代表藍色 初始值f 1,0 f 1,1 f 1,2 1 狀態轉移方程 for n 1 f n,0 f...