欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java教程散列表和樹所對應容器類及HashMap解決沖突學習

 更新時間:2021年10月08日 10:48:03   作者:chuangjizai7518  
本篇篇文章是java教程,主要介紹了java教程散列表,樹所對應容器類及HashMap解決沖突的學習,有需要的朋友可以借鑒參考下,希望能夠有所幫助

java中散列表、樹所對應的的容器類

散列表:hashmap,hashtable,concurrentHashmap

樹:hashset,treemap,treeset

jdk7與jdk8中HashMap的區(qū)別

jdk7中hashMap采用數(shù)組+鏈表,如果過多的節(jié)點在hash時發(fā)生碰撞,如果要查找其中一個節(jié)點,需要O(n)的查找時間。

jdk7中hashMap采用數(shù)組+鏈表/紅黑樹,當某個桶位達到某個閾值時,鏈表將轉化為紅黑樹,紅黑樹時間復雜度O(nlogn)

HashMap如何解決沖突

1.開放定址法: 通過探測算法,當一個槽位已經(jīng)被占用情況下繼續(xù)查找下一個
2.鏈地址法(數(shù)組+鏈表)
3.再哈希 準備多個散列函數(shù),當發(fā)生沖突時,再選擇一個散列函數(shù)進行散列。

HashMap的工作原理

HashMap 底層是數(shù)組和單向鏈表實現(xiàn),數(shù)組中的每個元素都是鏈表,由 Node 內部類(實現(xiàn) Map.Entry<K,V>接口)實現(xiàn),HashMap 通過 put & get 方法存儲和獲取。

HashCode是定位(存儲位置),equals是定性(兩者是否相等)

1.存儲對象時,將K/V傳給put()方法:

2.hash(K)計算K的hash,結合數(shù)組長度,計算數(shù)組下標

調整數(shù)據(jù)大?。ó斎萜髦械脑貍€數(shù)大于 capacity * loadfactor 時,容器會進行擴容resize 為 2n)

3.三種情況:

  • 當K的hash值不在HashMap中,則執(zhí)行插入
  • 當K的hash值存在HashMap中,發(fā)生碰撞
       它們兩者equals為true,更新鍵值對
       它們兩者equals為false,插入鏈表尾部或紅黑樹(當鏈表長度超過8)中

獲取對象時(get方法):

  • 調用hash(K),計算K的hash值從而獲取數(shù)組的下標
  • 順序遍歷鏈表,equal方法查找相同 Node 鏈表中 K 值對應的 V 值

轉載于:https://my.oschina.net/u/3973793/blog/3100006

以上就是java教程散列表和樹所對應容器類及HashMap解決沖突學習的詳細內容,更多關于java散列表樹所對應容器類及HashMap解決沖突的資料請關注腳本之家其它相關文章!

相關文章

  • 基于IDEA,Eclipse搭建Spring Boot項目過程圖解

    基于IDEA,Eclipse搭建Spring Boot項目過程圖解

    這篇文章主要介紹了基于IDEA,Eclipse搭建Spring Boot項目過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • Java開發(fā)環(huán)境配置方法

    Java開發(fā)環(huán)境配置方法

    這篇文章主要介紹了并不是每一臺計算機都可以運行Java程序,要運行Java程序,計算機必須學習搭建Java開發(fā)環(huán)境,需要的朋友可以參考下
    2015-07-07
  • SpringBoot配置文件格式詳細介紹

    SpringBoot配置文件格式詳細介紹

    這篇文章主要為大家詳細介紹了SpringBoot配置文件格式,文中的示例代碼講解詳細,對我們學習SpringBoot有一定幫助,需要的可以參考一下
    2022-09-09
  • 深入理解Java中的EnumMap和EnumSet

    深入理解Java中的EnumMap和EnumSet

    這篇文章主要介紹了深入理解Java中的EnumMap和EnumSet,一般來說我們會選擇使用HashMap來存儲key-value格式的數(shù)據(jù),考慮這樣的特殊情況,一個HashMap的key都來自于一個Enum類,這樣的情況則可以考慮使用本文要講的EnumMap,需要的朋友可以參考下
    2023-11-11
  • 基于Java設計一個短鏈接生成系統(tǒng)

    基于Java設計一個短鏈接生成系統(tǒng)

    相信大家在生活中會收到很多短信,而這些短信都有一個特點是鏈接很短。這些鏈接背后的原理是什么呢?怎么實現(xiàn)的?小編今天就帶你們詳細了解一下
    2021-12-12
  • 基于SSM框架實現(xiàn)簡單的登錄注冊的示例代碼

    基于SSM框架實現(xiàn)簡單的登錄注冊的示例代碼

    這篇文章主要介紹了基于SSM框架實現(xiàn)簡單的登錄注冊的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • java中TCP實現(xiàn)回顯服務器及客戶端

    java中TCP實現(xiàn)回顯服務器及客戶端

    本文主要介紹了java中TCP實現(xiàn)回顯服務器及客戶端,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • 基于java中兩個對象屬性的比較

    基于java中兩個對象屬性的比較

    下面小編就為大家?guī)硪黄趈ava中兩個對象屬性的比較。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Java使用modbus4j實現(xiàn)modbus?tcp通訊

    Java使用modbus4j實現(xiàn)modbus?tcp通訊

    Modbus是由Modicon(現(xiàn)為施耐德電氣公司的一個品牌)在1979年發(fā)明的,是全球第一個真正用于工業(yè)現(xiàn)場的總線協(xié)議,本文主要介紹了java如何使用modbus4j實現(xiàn)modbus?tcp通訊,感興趣的可以了解下
    2023-12-12
  • 如何使用IDEA從SVN服務端檢出項目

    如何使用IDEA從SVN服務端檢出項目

    這篇文章主要介紹了如何使用IDEA從SVN服務端檢出項目問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12

最新評論