说一下HashMap的实现原理
生活随笔
收集整理的這篇文章主要介紹了
说一下HashMap的实现原理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
- HashMap 基于 Hash 算法實現,通過 put(key,value) 存儲,get(key) 來獲取 value
- 當傳入 key 時,HashMap 會根據 key,調用 hash(Object key) 方法,計算出 hash 值,根據 hash 值將 value 保存在 Node 對象里,Node 對象保存在數組里
- 當計算出的 hash 值相同時,稱之為 hash 沖突,HashMap 的做法是用鏈表和紅黑樹存儲相同 hash 值的 value
- 當 hash 沖突的個數:小于等于?8 使用鏈表;大于 8 時,使用紅黑樹解決鏈表查詢慢的問題
?
ps:
- 上述是 JDK 1.8 HashMap 的實現原理,并不是每個版本都相同,比如 JDK 1.7 的 HashMap 是基于數組 + 鏈表實現,所以 hash 沖突時鏈表的查詢效率低
- hash(Object key)? 方法的具體算法是?(h = key.hashCode()) ^ (h >>> 16),經過這樣的運算,讓計算的 hash 值分布更均勻
?
?
【Java面試題與答案】整理推薦
- 基礎與語法
- 集合
- 網絡編程
- 并發編程
- Web
- 安全
- 設計模式
- 框架
- 算法與數據結構
- 異常
- 文件解析與生成
- Linux
- MySQL
- Oracle
- Redis
- Dubbo
?
總結
以上是生活随笔為你收集整理的说一下HashMap的实现原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql怎么禁用安全模式_mysql开
- 下一篇: 内核领域-功耗机型的续航基线优化问题-技