真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java8的HashMap怎么用

這篇文章給大家分享的是有關(guān)Java8的HashMap怎么用的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

創(chuàng)新互聯(lián)建站于2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元梅縣做網(wǎng)站,已為上家服務(wù),為梅縣各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792

Java8HashMap

Java8對HashMap進(jìn)行了一些修改,最大的不同就是利用了紅黑樹,所以其由數(shù)組+鏈表+紅黑樹組成。

根據(jù)Java7HashMap的介紹,我們知道,查找的時(shí)候,根據(jù)hash值我們能夠快速定位到數(shù)組的具體下標(biāo),但是之后的話,需要順著鏈表一個(gè)個(gè)比較下去才能找到我們需要的,時(shí)間復(fù)雜度取決于鏈表的長度,為O(n)。

為了降低這部分的開銷,在Java8中,當(dāng)鏈表中的元素超過了8個(gè)以后,會將鏈表轉(zhuǎn)換為紅黑樹,在這些位置進(jìn)行查找的時(shí)候可以降低時(shí)間復(fù)雜度為O(logN)。

下面,我們還是用代碼來介紹吧,個(gè)人感覺,Java8的源碼可讀性要差一些,不過精簡一些。

Java7中使用Entry來代表每個(gè)HashMap中的數(shù)據(jù)節(jié)點(diǎn),Java8中使用Node,基本沒有區(qū)別,都是key,value,hash和next這四個(gè)屬性,不過,Node只能用于鏈表的情況,紅黑樹的情況需要使用TreeNode。

我們根據(jù)數(shù)組元素中,第一個(gè)節(jié)點(diǎn)數(shù)據(jù)類型是Node還是TreeNode來判斷該位置下是鏈表還是紅黑樹的。

和Java7稍微有點(diǎn)不一樣的地方就是,Java7是先擴(kuò)容后插入新值的,Java8先插值再擴(kuò)容,不過這個(gè)不重要。

數(shù)組擴(kuò)容

resize()方法用于初始化數(shù)組或數(shù)組擴(kuò)容,每次擴(kuò)容后,容量為原來的2倍,并進(jìn)行數(shù)據(jù)遷移。

get過程分析

相對于put來說,get真的太簡單了。

計(jì)算key的hash值,根據(jù)hash值找到對應(yīng)數(shù)組下標(biāo):hash&(length-1)

判斷數(shù)組該位置處的元素是否剛好就是我們要找的,如果不是,走第三步

判斷該元素類型是否是TreeNode,如果是,用紅黑樹的方法取數(shù)據(jù),如果不是,走第四步

遍歷鏈表,直到找到相等(==或equals)的key

感謝各位的閱讀!關(guān)于“Java8的HashMap怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!


網(wǎng)頁題目:Java8的HashMap怎么用
本文鏈接:http://weahome.cn/article/iipidc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部