最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java Map集合用法詳解

 更新時(shí)間:2021年10月22日 15:06:15   作者:做哈白日夢  
Map用于保存具有映射關(guān)系的數(shù)據(jù),Map集合里保存著兩組值,一組用于保存Map的ley,另一組保存著Map的value;Map集合和查字典類似,通過key找到對應(yīng)的value,通過頁數(shù)找到對應(yīng)的信息。用學(xué)生類來說,key相當(dāng)于學(xué)號(hào),value對應(yīng)name,age,sex等信息。用這種對應(yīng)關(guān)系方便查找

Map集合的概述

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

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

特點(diǎn):

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

常用方法:

在這里插入圖片描述

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

其中獲取功能:

在這里插入圖片描述

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

遍歷方式:

第一種:

在這里插入圖片描述

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

第二種:

在這里插入圖片描述

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

HashMap

存儲(chǔ)方式:

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

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

TreeMap

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

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

類似這種形式為:

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

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

高頻面試題

1、Map

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

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

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

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

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

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

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

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

相關(guān)文章

  • idea如何忽略.iml文件和.idea目錄

    idea如何忽略.iml文件和.idea目錄

    這篇文章主要介紹了idea如何忽略.iml文件和.idea目錄問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • java圖形化界面實(shí)現(xiàn)登錄窗口

    java圖形化界面實(shí)現(xiàn)登錄窗口

    這篇文章主要為大家詳細(xì)介紹了java圖形化界面實(shí)現(xiàn)登錄窗口,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Java function函數(shù)式接口的使用方法與實(shí)例

    Java function函數(shù)式接口的使用方法與實(shí)例

    這篇文章主要介紹了Java function函數(shù)式接口的使用方法與實(shí)例,函數(shù)式接口如一支未完成的詩篇,用Lambda表達(dá)式作韻腳,將代碼的機(jī)械美感與藝術(shù)的抽象融為一體,悄然重構(gòu)了開發(fā)者對代碼之美的認(rèn)知,需要的朋友可以參考下
    2025-02-02
  • Java虛擬機(jī)內(nèi)存區(qū)域劃分詳解

    Java虛擬機(jī)內(nèi)存區(qū)域劃分詳解

    這篇文章主要介紹了Java虛擬機(jī)內(nèi)存區(qū)域劃分,本文邏輯清晰,可以幫助我們更好的掌握虛擬機(jī),對我們學(xué)習(xí)java來說是一種幫助,需要的朋友可以參考下
    2021-04-04
  • Java 在Word中創(chuàng)建郵件合并模板并合并文本和圖片的操作方法

    Java 在Word中創(chuàng)建郵件合并模板并合并文本和圖片的操作方法

    通過Java程序展示如何來實(shí)現(xiàn)創(chuàng)建模板,并通過郵件合并功能來合并文本數(shù)據(jù)和圖片數(shù)據(jù)的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-07-07
  • maven <repositories>標(biāo)簽和<pluginRepositories>標(biāo)簽的使用

    maven <repositories>標(biāo)簽和<pluginRepositories>標(biāo)簽的使用

    這篇文章主要介紹了maven <repositories>標(biāo)簽和<pluginRepositories>標(biāo)簽的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 大模型chat/completions和completions區(qū)別解析

    大模型chat/completions和completions區(qū)別解析

    OpenAI的completions和chat/completions是兩個(gè)不同的端點(diǎn),completions用于單次文本補(bǔ)全,而chat/completions用于多輪對話生成,選擇哪個(gè)端點(diǎn)取決于你的具體需求,本文介紹大模型chat/completions和completions區(qū)別,感興趣的朋友一起看看吧
    2025-03-03
  • IDEA設(shè)置Maven自動(dòng)編譯model的實(shí)現(xiàn)方法

    IDEA設(shè)置Maven自動(dòng)編譯model的實(shí)現(xiàn)方法

    本文主要介紹了IDEA設(shè)置Maven自動(dòng)編譯model的實(shí)現(xiàn)方法, maven結(jié)構(gòu)的項(xiàng)目,我們在每次修改代碼后都會(huì)需要手動(dòng)編譯,本文就可以解決這個(gè)問題,感興趣的可以了解一下
    2023-08-08
  • spring.mvc.servlet.load-on-startup屬性方法源碼解讀

    spring.mvc.servlet.load-on-startup屬性方法源碼解讀

    這篇文章主要介紹了spring.mvc.servlet.load-on-startup的屬性方法源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Java通過Lambda函數(shù)的方式獲取屬性名稱

    Java通過Lambda函數(shù)的方式獲取屬性名稱

    這篇文章主要介紹了通過Lambda函數(shù)的方式獲取屬性名稱,實(shí)現(xiàn)步驟是通過定義一個(gè)函數(shù)式接口, 用來接收lambda方法引用,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10

最新評論

古浪县| 平谷区| 普格县| 红河县| 新干县| 班玛县| 彩票| 黄平县| 阜康市| 扎鲁特旗| 章丘市| 荥经县| 上饶市| 新郑市| 济宁市| 托克托县| 海伦市| 西乡县| 建始县| 三河市| 桃园市| 乐陵市| 翁牛特旗| 景德镇市| 临西县| 盐源县| 杭锦后旗| 屯门区| 北票市| 田阳县| 清水河县| 蕉岭县| 奇台县| 山阴县| 岱山县| 天水市| 盐山县| 香河县| 图们市| 灯塔市| 铜山县|