欧美一区2区三区4区公司二百,国产精品婷婷午夜在线观看,自拍偷拍亚洲精品,国产美女诱惑一区二区

HashMap 添加源碼分析

HashMap

?

碼源解析

?

添加源碼解析

?

resize()

?

這個方法在putval中執(zhí)行,因為要確保你數(shù)組不是null

?

resize就是重新計算容量;向HashMap對象里不停的添加元素,而HashMap對象內(nèi)部的數(shù)組無法裝載更多的元素時,對象就需要擴(kuò)大數(shù)組的長度,以便能裝入更多的元素;當(dāng)然java里的數(shù)組是無法自動擴(kuò)容的,方法是使用一個新的數(shù)組代替已有的容量小的數(shù)組;就像我們用一個小桶裝

putVal()
首次添加

final V putVal(int hash, K key, V value, boolean onlyIfAbsent,
? ? ? ? ? ? ? ? ? ?boolean evict) {
? ? ? ? Node<K,V>[] tab; Node<K,V> p; int n, i;
? ? ? ? if ((tab = table) == null || (n = tab.length) == 0)
? ? ? ? ? ? n = (tab = resize()).length;
? ? ? ? if ((p = tab[i = (n - 1) & hash]) == null)
? ? ? ? ? ? tab[i] = newNode(hash, key, value, null);
? ? ? ??
? ??
? ? ~~~~~
? ??
? ? ? ? ++modCount;
? ? ? ? if (++size > threshold)
? ? ? ? ? ? resize();
? ? ? ? afterNodeInsertion(evict);
? ? ? ? return null;
? ? }

if ((p = tab[i = (n - 1) & hash) == null)

初始化完成后,他會去根據(jù)數(shù)組長度-1與計算的hash碼進(jìn)行與運(yùn)算的出來放的數(shù)組位置,他會去看這個位置有沒有元素

有呢就創(chuàng)建一個Node放到這個位置就可以了

如果不是null那就只能鏈表操作了,那個操作等會說

if (++size > threshold)
? ? ? ?resize();
afterNodeInsertion(evict);
return null;

之后呢,我們要變更size的大小,因為size是記錄有多少個真正的元素在這個數(shù)組中,threshold就是臨界值,我們初始化好了,這個值就是12,這個if呢就是為了判斷,你添加到數(shù)組的元素,你不能大于這個臨界值,那你要是大于了,那我就去擴(kuò)容去了,否則了那就沒事了

afterNodeInsertion(evict);

afterNodeInsertion(evict);

這玩意是為了LinkedHashMap服務(wù)的,是為了保證順序而存在的,在hashmap中沒意義。

文章鏈接: http://www.qzkangyuan.com/13042.html

文章標(biāo)題:HashMap 添加源碼分析

文章版權(quán):夢飛科技所發(fā)布的內(nèi)容,部分為原創(chuàng)文章,轉(zhuǎn)載請注明來源,網(wǎng)絡(luò)轉(zhuǎn)載文章如有侵權(quán)請聯(lián)系我們!

聲明:本站所有文章,如無特殊說明或標(biāo)注,均為本站原創(chuàng)發(fā)布。任何個人或組織,在未征得本站同意時,禁止復(fù)制、盜用、采集、發(fā)布本站內(nèi)容到任何網(wǎng)站、書籍等各類媒體平臺。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。

給TA打賞
共{{data.count}}人
人已打賞
建站教程投稿分享

Pyhon程序控制流程

2022-11-23 13:58:53

建站教程投稿分享

并發(fā)修改異常簡介

2022-11-23 14:08:50

0 條回復(fù) A文章作者 M管理員
    暫無討論,說說你的看法吧
?
個人中心
購物車
優(yōu)惠劵
今日簽到
有新私信 私信列表
搜索
主站蜘蛛池模板: 保靖县| 通州市| 蓝田县| 内江市| 邛崃市| 桂东县| 自贡市| 榕江县| 宜城市| 常宁市| 沭阳县| 探索| 乡城县| 云梦县| 江川县| 虞城县| 嘉峪关市| 施秉县| 婺源县| 沙田区| 响水县| 剑川县| 吴旗县| 东丽区| 定南县| 南郑县| 万源市| 泸定县| 岳池县| 沈丘县| 闸北区| 阳新县| 建瓯市| 连江县| 闵行区| 新乐市| 拉萨市| 江山市| 临猗县| 渭南市| 东乡族自治县|