當(dāng)key的hashcode相同的時(shí)候?
HashMap底層是一個(gè)一維數(shù)組,數(shù)組每個(gè)元素是一個(gè)鏈表。當(dāng)添加元素的時(shí)候,先通過hashcode定位到數(shù)組下標(biāo),再通過equals方法判斷鏈表中是否有相同的key,如果不同就會(huì)添加到鏈表中,相同則覆蓋value。
Jdk8中,如果鏈表元素超過8個(gè),為了性能就會(huì)把鏈表變成紅黑樹來存儲(chǔ)。
hashcode方法盡量能減少哈希沖突,性能最高。如果鏈表很長(zhǎng),性能也就比較低了。