序言
本來(lái)是在講解List接口系列的集合,但是接下來(lái)我要講的是那個(gè)HashSet,要明白HashSet就必須先要明白HashMap,所以在此出穿插一篇hashMap的文章,為了更好的學(xué)習(xí)HashSet。個(gè)人感覺(jué)初次看HashMap源碼比較難,但是明白了,其實(shí)也不是很難,
--WH
一、準(zhǔn)備工作。
建議:先去看一下我的另一篇講解hashcode的文章,讓自己知道為什么使用hashcode值進(jìn)行查詢會(huì)很快。如果你已經(jīng)懂了hashcode的工作原理,那么就可以直接往下看了。http://www.cnblogs.com/whgk/p/6071617.html
1、鏈表散列
什么是鏈表散列呢?通過(guò)數(shù)組和鏈表結(jié)合在一起使用,就叫做鏈表散列。這其實(shí)就是hashmap存儲(chǔ)的原理圖。
2、hashMap的數(shù)據(jù)結(jié)構(gòu)和存儲(chǔ)原理
HashMap的數(shù)據(jù)結(jié)構(gòu)就是用的鏈表散列,大概是怎么存儲(chǔ)的呢?分兩步
1、HashMap內(nèi)部有一個(gè)entry的內(nèi)部類,其中有四個(gè)屬性,我們要存儲(chǔ)一個(gè)值,則需要一個(gè)key和一個(gè)value,存到map中就會(huì)先將key和value保存在這個(gè)Entry類創(chuàng)建的對(duì)象中。
//這里只看這一小部分,其他重點(diǎn)的在下面詳細(xì)解釋