Map是以鍵值對(duì)來(lái)存儲(chǔ)對(duì)象的误澳,它的底層實(shí)際上是數(shù)組和鏈表來(lái)組成的,經(jīng)典的一張圖如下:
當(dāng)使用put方法時(shí),先查找出數(shù)組位置是否存在對(duì)象果正,通過(guò)key.hashcode對(duì)數(shù)組長(zhǎng)度取余;存在盟迟,則把里面的鏈表拿出來(lái)秋泳,判斷鏈表里面是否存在key值與傳遞過(guò)來(lái)的key值一樣的對(duì)象,存在攒菠,則把傳遞過(guò)來(lái)的value取代鏈表key對(duì)應(yīng)的value,不存在迫皱,則直接通過(guò)鏈表的add()方法加到鏈表后面;
當(dāng)使用get方法時(shí)辖众,先查找出數(shù)組位置是否存在對(duì)象卓起,通過(guò)key.hashcode對(duì)數(shù)組長(zhǎng)度取余;如果不存在凹炸,則返回為空戏阅,如果存在,則遍歷鏈表啤它,判斷鏈表里面是否存在key值與傳遞過(guò)來(lái)的key值一樣的對(duì)象奕筐,存在舱痘,則把key值對(duì)應(yīng)的value取出返回,不存在,則返回為空离赫;
image.png