HashMap的底層實現原理


1.線性鏈表->數組+鏈表 --------HashMap是數組結構、鏈表結構與Hash算法的結合。

如圖所示:

 

Hash算法中  Object.hashcode()   計算出Object的哈希碼值(int)

  同一個對象 多次調用 hashcode()得到的結構都是相同的

  兩個對象調用equals()方法結果為true 即比較結果相同,這兩個對象再調用hashcode()也一定相同。如果這個兩個對象調用equals()方法結果不相同的話,這兩個對象再調用hashcode()也不一定不相同。

HashMap 和HashTable的區別:

  HashMap允許空值和空鍵;

  HashTable不允許空value。源碼如圖:

而且是線程安全的,synchronized,下面這個是另外一個ConcurrentHashMap,hashtable是鎖整張表,而這個是鎖某個段。HashMap是線性非安全的,效率較線程安全的來時相對高。

ConcurrentHashMap  不允許空鍵值對

 

       // 2.通過Hash算法計算要插入的值。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM