Map集合基礎(chǔ)總結(jié)

1. HashMap

  • 創(chuàng)建方式

    • 不指定容量: 默認(rèn)使用16
    • 指定容量:
      容量為用于存儲數(shù)據(jù)的HashTable的主干數(shù)組的長度
    • 用于存儲數(shù)據(jù)的HashTable骇窍,在put( )方法第一次調(diào)用( 第一次存KV鍵值對 ),會進(jìn)行創(chuàng)建
  • 存儲結(jié)構(gòu)

    基于 哈希表( Hash Table ) 設(shè)計锥余,哈希表的主干結(jié)構(gòu)是數(shù)組
    JDK1.7 :采用 數(shù)組 + 單向鏈表
    JDK1.8 :采用 數(shù)組 + 單向鏈表 + 紅黑樹

  • 方法

  1. put( 鍵key腹纳,值value )
    功能:添加元素至當(dāng)前集合
    傳入:傳入鍵key和與key對應(yīng)的值value
    返回:添加了元素KV鍵值對之后的Map集合
  2. get( 指定key )
    功能:通過指定key獲取對應(yīng)的value
    傳入:指定的鍵key
    返回:返回與key對應(yīng)的值value,若傳入集合不存在的key,返回value為null
  3. clear( )
    功能:清空整個集合(清空所有KV鍵值對)
    返回:空集合
  4. containsKey( 指定key )
    功能:檢查當(dāng)前集合中是否包含指定key
    傳入:要判斷的key
    返回:boolean值嘲恍,如果存在返回true足画,否則返回false
  5. containsValue( 指定value )
    功能:檢查當(dāng)前集合中是否包含指定value
    傳入:要判斷的value
    返回:boolean值,如果存在返回true佃牛,否則返回false
  6. isEmpty( )
    功能:檢查當(dāng)前集合是否為空
    返回:boolean值淹辞,如果為空返回true,否則返回false
  7. keySet( )
    功能:返回當(dāng)前Map集合中所有的key鍵
    返回:將所有的key放入一個Set集合內(nèi)返回
  8. values( )
    功能:返回當(dāng)前Map集合中所有的value
  9. entrySet( )
    功能:獲取集合內(nèi)所有的鍵值對
    返回:將所有的鍵值對放在Set集合內(nèi)返回
  10. getKey( )
    功能:獲取Entry鍵值對中的key
    返回:返回鍵值對中的key
  11. getValue( )
    功能:獲取Entry鍵值對中的value
    返回:返回鍵值對中的value
  12. getOrDefault( 指定key俘侠,默認(rèn)值 )
    功能:按照指定key獲取對應(yīng)的value
    傳入:指定·的key象缀,指定的默認(rèn)值
    返回:若傳入的key存在,返回對應(yīng)的value爷速;否則返回默認(rèn)值
  13. putIfAbsent( key央星,value )
    功能:如果當(dāng)前key不存在,則添加key和value至當(dāng)前集合惫东;否則莉给,執(zhí)行添加操作
    傳入:指定key和指定value
    返回:如果key存在,則返回value廉沮;否則返回null
  14. remove( key )
    功能:按照key刪除鍵值對
    傳入:指定key
    返回:如果key存在颓遏,則返回value;否則返回null
  15. replace( key废封,新value )
    功能:按照key將所對應(yīng)的value替換成新的value
    傳入:指定的key州泊,和將要替換的新value
    返回:如果key存在,則返回value漂洋,不存在遥皂,則返回null
  16. replace( key,舊value刽漂,新value )
    功能:按照key和舊value演训,如果與當(dāng)前鍵值對一致,則用舊value替換贝咙;否則不替換
    傳入:指定key样悟,原來的的舊value,和要替換的新value
    返回:替換成功庭猩,則返回true窟她;否則,返回false

2. LinkedHashMap

  • 創(chuàng)建方式
    繼承自HashMap蔼水,創(chuàng)建方式與HashMap完全一樣
  • 存儲特點(diǎn)
    有序
  • 存儲結(jié)構(gòu)
    主要存儲結(jié)果與HashMap保持一致
    另外震糖,LinkedHashMap內(nèi)部維護(hù)了一個雙向鏈表,用于存儲順序

3. TreeMap( 集合類 )

  • 創(chuàng)建方式
    創(chuàng)建方式與HashMap一致
  • 存儲特點(diǎn)
    默認(rèn)自動按照key進(jìn)行排序
  • 存儲結(jié)構(gòu)
    采用紅黑樹保存數(shù)據(jù)趴腋,使用Comparetor比較器進(jìn)行比較吊说,可以進(jìn)行升序存儲
  • 方法
  1. lowerKey( key )
    功能:找到小于指定key的一個key
    傳入:指定的鍵key
    返回:如果找到论咏,則返回key;如果沒有找到颁井,則返回null

  2. lowerEntry( key )
    功能:找到小于指定key的一個Entry鍵值對
    傳入:指定的鍵key
    返回:如果找到厅贪,則返回對應(yīng)的鍵值對Entry;如果沒有找到雅宾,則返回null

  3. floorKey( key )
    功能:找到小于等于指定key的一個key
    傳入:指定的鍵key
    返回:如果找到养涮,則返回該key;如果沒有找到秀又,則返回小于該key的第一個key

  4. floorEntry( key )
    功能:找到小于等于指定key的一個Entry鍵值對
    傳入:指定的鍵key
    返回:如果找到单寂,則返回該key對應(yīng)的鍵值對Entry;如果沒有找到吐辙,則返回小于該key的第一個key所對應(yīng)的Entry鍵值對

  5. higherKey( key )
    功能:找到小于指定key的一個key
    傳入:指定的鍵key
    返回:如果找到,則返回小于該key的第一個key蘸劈;如果沒有找到昏苏,則返回null

  6. higherEntry( key )
    功能:找到大于指定key的一個Entry鍵值對
    傳入:指定的鍵key
    返回:如果找到,則返回大于該key的第一個key對應(yīng)的鍵值對Entry威沫;如果沒有找到贤惯,則返回null

  7. ceilingKey( key )
    功能:找到大于等于指定key的一個Entry鍵值對
    傳入:指定的鍵key
    返回:如果找到,則返回該key棒掠;如果沒有找到孵构,則返回大于該key的第一個key所對應(yīng)的Entry鍵值對

  8. ceilingEntry( key )
    功能:找到大于等于指定key的一個Entry鍵值對
    傳入:指定的鍵key
    返回:如果找到,則返回該key烟很;如果沒有找到颈墅,則返回大于該key的一個key對應(yīng)的Entry鍵值對

  9. putAll( 其他Map集合 )
    功能:將傳人的“其它Map集合”內(nèi)的所有鍵值對,存入當(dāng)前Map集合
    傳入:要存入的鍵值對元素的集合
    返回:返回存入后的集合

  10. putIfAbsent( key雾袱,value )

    功能:如果當(dāng)前key存在恤筛,則不執(zhí)行添加操作key-value的操作;如果當(dāng)前key不存在芹橡,則執(zhí)行添加操作key-value的操作
    傳入:要存入的KV鍵值對
    返回:若執(zhí)行了添加操作毒坛,則返回添加后的集合;若沒有執(zhí)行添加操作林说,則返回原集合

  11. firstKey( )

    功能:獲取Map集合中的第一個key
    返回:返回集合中的第一個key

  12. firstEntry( )
    功能:獲取Map集合中的第一個key對應(yīng)的Entry鍵值對
    返回:返回集合中的第一個key對應(yīng)的Entry鍵值對

  13. lastKey( )
    功能:獲取Map集合中的最后一個key
    返回:返回集合中的最后一個key

  14. lastEntry( )
    功能:獲取Map集合中的最后一個key對應(yīng)的Entry鍵值對
    返回:返回集合中的最后一個key對應(yīng)的Entry鍵值對

  15. pollFirstEntry( )
    功能:彈出第一個鍵值對元素(彈出后煎殷,Map集合中將不存在彈出的元素)
    返回:彈出的鍵值對元素(集合中的第一個鍵值對)

  16. pollLastEntry( )

    功能:彈出最后一個鍵值對元素(彈出后,Map集合中將不存在彈出的元素)
    返回:彈出的鍵值對元素(集合中的最后一個鍵值對)

  17. headMap( 指定key腿箩,boolean值 )

    功能:按照指定的key豪直,從Map集合的頭部鍵值對開始截取,截取至指定key之前
    傳入:只傳入指定key,或傳入key和一個boolean值
    返回:若只傳入key度秘,則返回的頭部子集合中不包含傳入的指定key所對應(yīng)的KV鍵值對顶伞;若傳入key和boolean值true饵撑,則返回的頭部子集合中包含傳入的指定key所對應(yīng)的KV鍵值對

  18. tailMap( 指定key,boolean值 )

    功能:按照指定的key唆貌,從Map集合的尾部鍵值對開始截取滑潘,截取至指定key之前
    傳入:只傳入指定key,或傳入key和一個boolean值
    返回:若只傳入key,則返回的尾部子集合中包含傳入的指定key所對應(yīng)的KV鍵值對锨咙;若傳入key和boolean值false语卤,則返回的頭部子集合中不包含傳入的指定key所對應(yīng)的KV鍵值對

  19. subMap( 開始key,結(jié)束key)

    功能:按照開始key酪刀,截取至結(jié)束key
    傳入:開始截取的位置key粹舵,截取結(jié)束的位置key
    返回:截取后的子集合

  20. subMap( 開始key,開始key對應(yīng)的boolean值骂倘,結(jié)束key眼滤,結(jié)束key對應(yīng)的boolean值)

    功能:按照開始key,截取至結(jié)束key
    傳入:開始截取的位置key历涝,開始key對應(yīng)的boolean值诅需,截取結(jié)束的位置key,結(jié)束key對應(yīng)的boolean值
    返回:截取后的子集合傳入的開始key的boolean值為false荧库,結(jié)束key的boolean值為true堰塌,則返回子集合中不包含頭部鍵值對而包含尾部鍵值對;否則分衫,返回結(jié)果相反

  21. remove( key )

    功能:按照key進(jìn)行刪除鍵值對
    傳入:指定的key
    返回:刪除成功场刑,則返回key對應(yīng)的鍵值對;刪除失旘秸健(key不存在)牵现,則返回null

  22. remove( key,value)

    功能:按照KV鍵值對進(jìn)行刪除鍵值對
    傳入:指定的KV鍵值對
    返回:刪除成功屎勘,返回true施籍;刪除失敗(KV鍵值對不存在):返回false

  23. replace( key概漱,新value)

    功能:將指定的key對應(yīng)的值丑慎,替換為新value
    傳入:指定的key,要替換的新value
    返回:返回原來的被替換的value

  24. replace( key瓤摧,舊value竿裂,新value)
    功能:將指定的KV鍵值對中的舊value替換成新value
    傳入:指定的key,要被替換的舊value照弥,要替換的新value
    返回:替換成功腻异,返回true;替換失斦獯А(當(dāng)前集合中不存在傳入的KV鍵值對)悔常,返回false

4. HashTable

? 創(chuàng)建方式(默認(rèn)容量為11)影斑、存儲特點(diǎn)、存儲結(jié)構(gòu)與HashMap保持一致
? 與HashMap的區(qū)別:
? 方法都是線程安全的机打,聲明中都加入了synchronized
? 效率和速度相對較低

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末矫户,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子残邀,更是在濱河造成了極大的恐慌皆辽,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芥挣,死亡現(xiàn)場離奇詭異驱闷,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)空免,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門空另,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蹋砚,你說我怎么就攤上這事痹换。” “怎么了都弹?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長匙姜。 經(jīng)常有香客問我畅厢,道長,這世上最難降的妖魔是什么氮昧? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任框杜,我火速辦了婚禮,結(jié)果婚禮上袖肥,老公的妹妹穿的比我還像新娘咪辱。我一直安慰自己,他們只是感情好椎组,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布油狂。 她就那樣靜靜地躺著,像睡著了一般寸癌。 火紅的嫁衣襯著肌膚如雪专筷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天蒸苇,我揣著相機(jī)與錄音磷蛹,去河邊找鬼。 笑死溪烤,一個胖子當(dāng)著我的面吹牛味咳,可吹牛的內(nèi)容都是我干的庇勃。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼槽驶,長吁一口氣:“原來是場噩夢啊……” “哼责嚷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起捺檬,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤再层,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后堡纬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體聂受,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年烤镐,在試婚紗的時候發(fā)現(xiàn)自己被綠了蛋济。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡炮叶,死狀恐怖碗旅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情镜悉,我是刑警寧澤祟辟,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站侣肄,受9級特大地震影響旧困,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜稼锅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一吼具、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧矩距,春花似錦拗盒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至赞弥,卻和暖如春毅整,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背绽左。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工悼嫉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拼窥。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓戏蔑,卻偏偏與公主長得像蹋凝,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子总棵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評論 2 355