一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - Java Map集合用法詳解

Java Map集合用法詳解

2022-02-25 13:28做哈白日夢(mèng) Java教程

Map用于保存具有映射關(guān)系的數(shù)據(jù),Map集合里保存著兩組值,一組用于保存Map的ley,另一組保存著Map的value;Map集合和查字典類(lèi)似,通過(guò)key找到對(duì)應(yīng)的value,通過(guò)頁(yè)數(shù)找到對(duì)應(yīng)的信息。用學(xué)生類(lèi)來(lái)說(shuō),key相當(dāng)于學(xué)號(hào),value對(duì)應(yīng)name,age,

Map集合的概述

概述:interface Map<K,V> 其中K是鍵的類(lèi)型,鍵是唯一的,不重復(fù)。V是值的類(lèi)型,是可以重復(fù)。且每個(gè)鍵可以映射最多一個(gè)值。注意的是如果存在兩個(gè)相同的鍵時(shí),則會(huì)將現(xiàn)在的值替換之前的值。

創(chuàng)建方式:以多態(tài)的形式創(chuàng)建對(duì)象。

特點(diǎn):

  • 鍵值對(duì)映射關(guān)系
  • 一個(gè)鍵對(duì)應(yīng)一個(gè)值
  • 鍵不能重復(fù),值可以重復(fù)
  • 元素存取無(wú)序

 

常用方法:

Java Map集合用法詳解

(put(K,V) 將指定的值與該映射中的指定j健相關(guān)聯(lián),用于添加,返回類(lèi)型V);

其中獲取功能:

Java Map集合用法詳解

其中:KeySet()返回為Set類(lèi)型,所以鍵是唯一的,不重復(fù)。

 

遍歷方式:

第一種:

Java Map集合用法詳解

通過(guò)獲取鍵的集合,再用get方法獲取到對(duì)應(yīng)的值。

第二種:

Java Map集合用法詳解

 

Map的實(shí)現(xiàn)類(lèi):

HashMap

存儲(chǔ)方式:

采用了 Key-value鍵值對(duì)映射的方式進(jìn)行存儲(chǔ)。

底層結(jié)構(gòu):采用哈希表的存儲(chǔ)結(jié)構(gòu)所以里面的數(shù)據(jù)是無(wú)序但是唯一的。(實(shí)現(xiàn)唯一的方式就是重寫(xiě) Hashcode和equals方法)

TreeMap

底層結(jié)構(gòu):采用的是二叉樹(shù)的存儲(chǔ)方式里面的數(shù)據(jù)是唯一而且有序的而且一般是按升序的方式排列 (要實(shí)現(xiàn)comparable接口并且重寫(xiě)compareTo的方法用來(lái)實(shí)現(xiàn)它的排序)。

集合嵌套(補(bǔ)充知識(shí)):

類(lèi)似這種形式為:

ArrayList<HashMap<String, String>> array = new ArrayList<HashMap<String, String>>();

為集合嵌套,主要注意的就是:在集合中嵌套集合的類(lèi)型和方法使用。

 

高頻面試題

1、Map

HashMap: JDK1.8之前HashMap由數(shù)組+鏈表組成的,數(shù)組是HashMap的主體,鏈表則是主要為了解決哈希沖突而存在的(“拉鏈法”解決沖突).JDK1.8以后在解決哈希沖突時(shí)有了較大的變化,當(dāng)鏈表長(zhǎng)度大于閾值(默認(rèn)為8)時(shí),將鏈表轉(zhuǎn)化為紅黑樹(shù),以減少搜索時(shí)間。

LinkedHashMap: LinkedHashMap 繼承自 HashMap,所以它的底層仍然是基于拉鏈?zhǔn)缴⒘薪Y(jié)構(gòu)即由數(shù)組和鏈表或紅黑樹(shù)組成。另外,LinkedHashMap 在上面結(jié)構(gòu)的基礎(chǔ)上,增加了一條雙向鏈表,使得上面的結(jié)構(gòu)可以保持鍵值對(duì)的插入順序。同時(shí)通過(guò)對(duì)鏈表進(jìn)行相應(yīng)的操作,實(shí)現(xiàn)了訪(fǎng)問(wèn)順序相關(guān)邏輯。詳細(xì)可以查看:《LinkedHashMap 源碼詳細(xì)分析(JDK1.8)》。

HashTable: 數(shù)組+鏈表組成的,數(shù)組是 HashMap 的主體,鏈表則是主要為了解決哈希沖突而存在的。

TreeMap: 紅黑樹(shù)(自平衡的排序二叉樹(shù))。

2、HashMap的底層實(shí)現(xiàn)

JDK1.8 之前 HashMap 由 數(shù)組+鏈表 組成的(“鏈表散列” 即數(shù)組和鏈表的結(jié)合體)。

JDK1.8之后在解決哈希沖突時(shí)有了較大的變化,當(dāng)鏈表長(zhǎng)度大于閾值(默認(rèn)為8)時(shí),將鏈表轉(zhuǎn)化為紅黑樹(shù),以減少搜索時(shí)間,所以有數(shù)組+鏈表+紅黑樹(shù)組成。

到此這篇關(guān)于Java Map集合用法詳解的文章就介紹到這了,更多相關(guān)Java Map集合內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/weixin_46870007/article/details/120874450

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品综合久久久久久88小说 | 欧美日韩一区二区三区韩大 | bnb99八度免费影院 | ts人妖系列在线专区 | 久久三级视频 | 国产欧美日韩高清专区ho | 成人在线第一页 | 久久理论片迅播影院一级 | 国产精品合集一区二区 | 久久精品热在线观看85 | 香蕉成人国产精品免费看网站 | 亚洲99久久无色码中文字幕 | 天天综合天天综合 | 亚洲欧美久久一区二区 | 国产成人精品午夜免费 | 国产精品免费一级在线观看 | 青青网在线视频 | 窝窝影院午夜色在线视频 | 2021国产麻豆剧传媒剧情最新 | 日本一道本中文字幕 | 四虎在线永久视频观看 | 18日本xxxxxxⅹxx96 | 国产成人在线小视频 | 国产欧美视频高清va在线观看 | 大伊香蕉精品视频一区 | 91热爆在线 | 成人免费片| 奇米久草 | 欧美人做人爱a全程免费 | 亚洲欧美综合在线观看 | 日韩欧美中文在线 | 女女同性做爰xxoo亲吻 | 精品国产免费一区二区三区 | 午夜国产精品视频 | 四虎视屏 | yellow最新视频2019 | 美女的让男人桶爽免费看 | 羞羞私人影院可以直接免费观影吗 | 福利视频一区二区牛牛 | 免费看又黄又爽又猛的视频软件- | 国产成人精品.一二区 |