国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

千鋒教育Java入門全套視頻教程(java核心技術(shù),適合java零基礎(chǔ),Java

2023-07-20 09:34 作者:bili_70586305476  | 我要投稿

HashMap的底層實(shí)現(xiàn)原理簡單分析:

1.在使用無參構(gòu)造方法創(chuàng)建一個新的HashMap時,系統(tǒng)自動分配了一個閾值為0.75.該閾值的含義指的是,當(dāng)HashMap中存放的鍵值對總數(shù)超過桶數(shù)(無參構(gòu)造時,默認(rèn)有16個桶)*閾值時,桶數(shù)將自動進(jìn)行擴(kuò)容.而進(jìn)行帶參構(gòu)造時,可以傳只傳一個數(shù),在經(jīng)過特定的位運(yùn)算后,得到2的n次方的一個數(shù)即作為桶的數(shù)量,傳入兩個數(shù)時,第一個數(shù)的作用與只傳入一個參數(shù)時一直,第二個參數(shù)則作為閾值.

2.在向該HashMap中通過put增加元素時,先通過計算一個特殊的算法值,由key的哈希值與該值右移16位的值做異或運(yùn)算.當(dāng)key為null時,返回0.

3.第一次通過put方法時,會創(chuàng)造出長度為桶數(shù)的的鏈表數(shù)組.將之前提到的特殊算法值與桶數(shù)-1作位與運(yùn)算.得到0-桶數(shù)-1之間的一個數(shù),將該鍵值對,放在對應(yīng)的下標(biāo)的鏈表數(shù)組下

4.后續(xù)添加過程為,先計算key的特殊算法值,并放在指定的鏈表數(shù)組處,如果該鏈表處為空,之間將鍵值對放置于此.如果不為空,判斷該鏈表為節(jié)點(diǎn),樹,還是鏈表,

1)如果是單節(jié)點(diǎn),比較key值與特殊算法值,如果相同,則用新的value替換舊的value

2)如果是樹,就將該鍵值對加入

3)如果是鏈表,將該key與鏈表中所有的key值對比,當(dāng)該key與所有key都不同時,放在最后一個節(jié)點(diǎn)上,如果節(jié)點(diǎn)的數(shù)量達(dá)到9個,則開始判斷是否樹化,樹化時判斷長度是否大于32,不滿足則使桶的長度翻倍.


千鋒教育Java入門全套視頻教程(java核心技術(shù),適合java零基礎(chǔ),Java的評論 (共 條)

分享到微博請遵守國家法律
微山县| 铜梁县| 镇巴县| 嘉禾县| 桦南县| 山东| 绍兴市| 灵川县| 商丘市| 漳浦县| 嘉荫县| 达日县| 兰坪| 武隆县| 云浮市| 龙岩市| 雷山县| 陇川县| 沙坪坝区| 曲麻莱县| 尚义县| 象山县| 双江| 广平县| 榕江县| 华坪县| 竹山县| 鹿邑县| 蛟河市| 南开区| 读书| 康乐县| 梧州市| 嘉荫县| 屯留县| 三穗县| 勐海县| 泰宁县| 志丹县| 通化市| 普定县|