大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) hot資訊 Java Map集合的理解

Java Map集合的理解

更新時(shí)間:2021-05-08 10:55:28 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽999次

HashMap

1.HashSet()

loadFactor默認(rèn)0.75,threshold為12

并創(chuàng)建一個(gè)大小為16的Entry對(duì)象數(shù)組

可調(diào)用另外兩個(gè)構(gòu)造器控制初始容量值,loadFactor

數(shù)組大小由如下決定:

capacity才是創(chuàng)建的Entry對(duì)象數(shù)組的大小,new HashMap(5,0.6),則設(shè)loadFactor為0.6,并創(chuàng)建一個(gè)大小為8的Entry對(duì)象數(shù)組,threshold則為4( 8 * 0.6 = 4 )

2.put(key, value)

key為null,獲取第一個(gè)Entry對(duì)象,并基于Entry的next遍歷

key不為null,獲取key的hashCode,然后再對(duì)此hashCode作hash操作,hash完成后,將hash值與對(duì)象數(shù)組len按位與,得到key要存儲(chǔ)的數(shù)組位置。

增加時(shí)獲取數(shù)組首個(gè)Entry:e,并創(chuàng)建Entry對(duì)象,key為null,value為傳入對(duì)象,next為e。

若數(shù)組len >= threshold,擴(kuò)容為2倍,擴(kuò)容前對(duì)所有元素重新hash,并填充數(shù)組,最后重設(shè)置threshold。

找到key為null,更新value,返回

未找到,增加Entry。

hash沖突:不同key找到相同存儲(chǔ)位置,通過(guò)調(diào)用Entry對(duì)象next遍歷鏈表的方式。

3.get(Object key)

與put一樣,根據(jù)key是否為null分別處理

key為null –> 首個(gè)Entry –> next遍歷

key非null –> hash和按位與 –> 找到位置 –> 找到Entry –> next遍歷

4.remove(Object key)

類似get,找到key,當(dāng)前元素更新為next元素

未找到,遍歷鏈表

5.containsKey(key)

調(diào)用getEntry,與get基本相同,返回是否為null

6.keySet()

用來(lái)遍歷Map對(duì)象,返回KeySet對(duì)象實(shí)例

調(diào)用iterator返回keyIterator,遍歷中有增刪會(huì)拋異常

HashMap要點(diǎn)

HashMap采用數(shù)組方式存儲(chǔ)key,value構(gòu)成的Entry對(duì)象,無(wú)容量限制

HashMap基于key hash尋找Entry對(duì)象存放到數(shù)組的位置,對(duì)hash沖突采用鏈表的方式來(lái)解決

插入擴(kuò)容,擴(kuò)容時(shí)重hash,并復(fù)制對(duì)象到新的數(shù)組中

非線程安全

TreeMap

1.實(shí)現(xiàn)

支持排序的Map實(shí)現(xiàn),不同于HashMap

2.TreeMap()

將comparator屬性為null,若希望控制存儲(chǔ)順序,使用帶Comparator參數(shù)的構(gòu)造器

3.put(key, value)

判斷root是否為null

有,紅黑樹(shù)遍歷key,相等替換,不等找到null為止

無(wú),判斷key是否為null

未找到相同的key,創(chuàng)建新的Entry,將其parent設(shè)置成上面所尋找到的元素并根據(jù)和parent key比較的情況來(lái)設(shè)置parent的left或right屬性

是,1.拋NullPointerException,2.并將key造型為Comparable,進(jìn)行與上面相同過(guò)程

否,執(zhí)行2

是,建新Entry,并賦給root

否,判斷有無(wú)實(shí)現(xiàn)Comparator

基于紅黑樹(shù)實(shí)現(xiàn),一定要有key比較,要么傳入Comparator實(shí)現(xiàn),要么key對(duì)象實(shí)現(xiàn)Comparable接口

4.get(Object)

紅黑樹(shù)查找,從根開(kāi)始往下比,一直找到等key,返回其value

和put同樣的處理方式,如未傳入Comparator實(shí)現(xiàn),當(dāng)傳入的Object為null,拋異常

5.remove(O)

getEntry,并將Entry從紅黑樹(shù)上刪除,并重新調(diào)整樹(shù)上的相關(guān)結(jié)點(diǎn)。

6.containsKey(O)

同getEntry,但containsKey直接判斷返回的Entry是否為null

7.KeySet()

返回TreeMap的內(nèi)部類KeySet對(duì)象的實(shí)例,iterator的遍歷從根開(kāi)始,基于紅黑樹(shù)順序完成。

TreeMap要點(diǎn)

TreeMap基于紅黑樹(shù)實(shí)現(xiàn),無(wú)容量限制

TreeMap非線程安全

以上就是動(dòng)力節(jié)點(diǎn)小編介紹的"Java Map集合的理解",希望對(duì)大家有幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為您服務(wù)。

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 日本一级作爱片在线观看 | 国产精品成aⅴ人片在线观看 | 一级黄色免费毛片 | 国产精品久久网 | 日本免费毛片 | 久久精品香蕉视频 | 国产成人一区二区 | 国产91精品一区二区麻豆网站 | 91福利在线视频 | 狠狠色丁香婷婷综合激情 | 免费高清在线影片一区 | 直接看毛片 | 香蕉久人久人青草青草 | www久久久 | 国产一区二区三区 | 九草视频在线 | 国产精品11页| 日韩国产成人 | 久久国产乱子伦精品在 | 国产综合色在线视频播放线视 | 日本在线观看中文字幕 | 四房婷婷在线视频播放 | 五月色婷婷六月噜噜 | 国产精品亚洲欧美一区麻豆 | 国产白拍| 人成午夜免费大片在线观看 | 欧美日韩激情在线一区二区 | 久久青草免费91线频观看不卡 | 性夜黄a爽爽免费视频国产 性夜影院爽黄a爽免费看网站 | 四虎影院新地址 | 亚洲综合久久久久久中文字幕 | 在线成人免费观看国产精品 | 亚洲欧美一区二区三区麻豆 | 日本亚欧乱色视频在线网站 | 深夜福利网站在线观看 | 国产亚洲精品热视频在线观看 | 天天综合网天天综合色不卡 | 精品综合一区二区三区 | 久久中文字幕久久久久91 | 天天插天天干天天射 | 一区二区三区高清 |