1. 程式人生 > >HashMap存取元素原理分析

HashMap存取元素原理分析

通過觀察JDK原始碼,我們可以知道HashMap的底層資料結構是陣列加連結串列。如下圖:


當呼叫put方法新增元素時,首先呼叫要存的Key的hashcode方法算出一個雜湊碼值作為陣列下標,如果此下標沒有元素,直接存入。

如果在此下標已經存在元素,則呼叫Key的equals方法,如果返回true,則覆蓋。

如果呼叫Key的equals方法,如果返回false,則此陣列下標記憶體存一個連結串列,將兩個value都存下來。

在get的時候,首先,將Key算出一個雜湊碼值,然後用這個雜湊碼值當做下標去取元素,如果為null則返回null,

如果有一個元素,則對Key進行equals比對,如果為true,則返回這個元素,如果為false,返回null。

如果該下標下存的是一個連結串列,則進行迴圈equals,將遇到的最後put進來的equals返回true的元素返回。