??

簡介

? ? ? ? 本文介紹JDK7與JDK8的HashMap的區(qū)別。

JDK7與JDK8的HashMap區(qū)別

項(xiàng)

JDK7

JDK8

數(shù)據(jù)結(jié)構(gòu)


數(shù)組+鏈表。

復(fù)雜度:O(n)



數(shù)組+鏈表+紅黑樹

鏈表節(jié)點(diǎn)數(shù)大于8時(shí),鏈表轉(zhuǎn)為紅黑樹,復(fù)雜度降至O(logn)


插入位置

插入鏈表頭部

插入鏈表尾部

hash算法

復(fù)雜


簡單。

紅黑樹效率高,提高查詢效率的地方由紅黑樹實(shí)現(xiàn),沒必要像jdk7那么復(fù)雜。


擴(kuò)容機(jī)制

多線程可能導(dǎo)致:數(shù)據(jù)覆蓋、讀出為null、死循環(huán)

多線程可能導(dǎo)致:數(shù)據(jù)覆蓋、讀出為null。不會(huì)導(dǎo)致死循環(huán)(因?yàn)橛昧宋膊澹?/p>