Android面試一問一答:HashMap

HashMap的工作原理

  • HashMap底層由數組實現,是基于hashing原理,我們通過put()和get()方法存儲和獲取對象。
  • 在存儲時,首先我們通過key的hashCode()方法拿到key的哈希值,然后我們通過哈希算法,用拿到的哈希值計算出這個key、value節(jié)點的引用在數組中存放的位置,完成存儲。
  • 在獲取時,我們同樣根據key的哈希值,通過同樣的哈希算法,獲取到該節(jié)點在數組中的位置。

如果兩個不同的key計算得到的hashcode相同會怎樣

  • 首先,我們的key、value是以一個節(jié)點對象存儲的,數組當中存放的是該節(jié)點的引用。
  • 其次,該節(jié)點實現了鏈表結構。
  • 在存儲時如果數組中對應位置已經存在有效節(jié)點,我們會將新的節(jié)點的引用放到這個位置,然后這個新的節(jié)點的next成員變量指向之前這個位置的舊節(jié)點的引用。
  • 在獲取的時候,我們首先在數組中找到這個位置,然后遍歷,根據鍵對象的equals()方法確定出具體的值。

HashMap與HashTable的異同

  • HashMap不是線程安全的
  • HashMap可以允許key或者value為null。

參考:
http://www.itdecent.cn/p/45fa4e80b631

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容