HashMap原始碼解析 基於jdk11

2021-08-28 23:29:07 字數 903 閱讀 5926

首先我們從put方法說起:

public v put

(k key, v value)

繼續往下看putval方法:

final v putval

(int hash, k key, v value,

boolean onlyifabsent,

boolean evict)

//如果key已經存在, e = 存在的值

if(e.hash == hash &&

((k = e.key)

== key ||

(key != null && key.

equals

(k))))

break

; p = e;}}

//e != null,說明存在相同的key

if(e != null)

}++modcount;

//資料超過一定的數量 擴容if(

++size > threshold)

resize()

;afternodeinsertion

(evict)

;return null;

}

首先看看

public v get

(object key)

然後我們再看

final node

getnode

(int hash, object key)

while

((e = e.next)

!= null);}

}return null;

}

原始碼分析 HashMap原始碼再讀 基於Java8

最近工作不是太忙,準備再讀讀一些原始碼,想來想去,還是先從jdk的原始碼讀起吧,畢竟很久不去讀了,很多東西都生疏了。當然,還是先從炙手可熱的hashmap,每次讀都會有一些收穫。當然,jdk8對hashmap有一次優化 我們首先看到的,應該是它的一些基本引數,這對於我們了解hashmap有一定的作用...

HashMap原始碼解析

以jdk1.8為例,hashmap是乙個用於儲存key value鍵值對的集合,每乙個鍵值對是乙個node jdk1.7叫做entry 後台是用乙個node陣列來存放資料,這個node陣列就是hashmap的主幹。這裡我們主要來分析hashmap的get和put方法。public v put k k...

hashMap 原始碼解析

這幾天跳槽 被人問得最多的問題就是基礎方面的知識.當時學習的時候有點囫圇吞棗.現在回頭把這些基本的集合類原始碼都仔細閱讀下 hashmap 用的是最頻繁的.所以問得也最多了.initcapacity 初始化的容量 loadfacotr 負載因子 主要用來計算threshold的值 threshold...