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

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

JDK7HashMap環(huán)的產(chǎn)生原理是怎樣的

JDK7 HashMap環(huán)的產(chǎn)生原理是怎樣的,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

創(chuàng)新互聯(lián)建站是一家專注于網(wǎng)站設計、成都網(wǎng)站建設與策劃設計,安康網(wǎng)站建設哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設十余年,網(wǎng)設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:安康等地區(qū)。安康做網(wǎng)站價格咨詢:18980820575

成都創(chuàng)新互聯(lián)公司主營梓潼網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,重慶APP開發(fā),梓潼h5小程序開發(fā)搭建,梓潼網(wǎng)站營銷推廣歡迎梓潼等地區(qū)企業(yè)咨詢

JDK7中當我們用頭插法 對舊table數(shù)據(jù)重定位到新table的時候我們知道是會行程環(huán)的,環(huán)產(chǎn)生的核心函數(shù)transfer如下,其中重點關注部分以標出。
JDK7 HashMap環(huán)的產(chǎn)生原理是怎樣的

  1. 頭插法正常情況下:
    JDK7 HashMap環(huán)的產(chǎn)生原理是怎樣的

  2. 并發(fā)情況下,比如我有兩個線程在同時進行put數(shù)據(jù)跟擴容操作,線程1只執(zhí)行了Entry next = e.next就被掛起了,而線程2正常執(zhí)行完畢,結果圖如下:
    JDK7 HashMap環(huán)的產(chǎn)生原理是怎樣的
    線程2執(zhí)行完畢后線程1接著從原來的暫停處開始執(zhí)行下面的語句:
    JDK7 HashMap環(huán)的產(chǎn)生原理是怎樣的
    通過逐步分析跟繪圖可以知道紅色部分會有環(huán)產(chǎn)生。JDK中HashMap是不安全的,多線程情況下要用ConcurrentHashMap。

7vs8

  1. 7中找Hash用了4次,8中只用了1次。

  2. 7 = 數(shù)組 + 鏈表,8 = 數(shù)組 + 鏈表 + 紅黑樹

  3. 7中是頭插法,多線程容易造成環(huán),8中是尾插法。

  4. 7的擴容是全部數(shù)據(jù)重新定位,8中是位置不變+ 移動舊size大小來實現(xiàn)更好些。

  5. 7是先判斷是否要擴容再插入,8中是先插入再看是否要擴容。

  6. HashMap不管78都是現(xiàn)場不安全的,多線程情況下記得用ConcurrentHashmap。ConcurrentHashmap下篇文章說。

常見問題

隨機搜羅了一些常見HashMap問題,如果把上述代碼都看懂了應付這些應該沒問題。

  1. HashMap原理,內部數(shù)據(jù)結構。

  2. HashMap中的put,get,remove大致過程。

  3. HashMap中 hash函數(shù)實現(xiàn)。

  4. HashMap如何擴容。

  5. HashMap幾個重要參數(shù)為什么這樣設定。

  6. HashMap為什么線程不安全,如何替換。

  7. HashMap在JDK7跟JDK8中的區(qū)別。

  8. HashMap中鏈表跟紅黑樹切換思路。

關于JDK7 HashMap環(huán)的產(chǎn)生原理是怎樣的問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關知識。


網(wǎng)頁名稱:JDK7HashMap環(huán)的產(chǎn)生原理是怎樣的
標題鏈接:http://weahome.cn/article/igcphe.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部