HashMap為什么比數組查詢快


  通常數組不直接保存值,而是通過保存值的list。然后對list中的“值”使用equals方法比較,這部分查詢速度自然慢。但是如果有好的散列函數,數組的每個位置就只有較少的“值”。因此,不是查詢所有的list,而是快速跳到數組的某個位置,只對很少的額元素進行比較,這就是HashMap會如此之快的原因。

  這里解釋一下數組的“鍵”,數組並不保存鍵本身,而是通過“鍵”對象生成一個數字,將其作為數組的下標索引。這個數字就是散列碼,有定義在Object中的hashcode生成(也稱散列函數)。你的類總是應該重載hashCode方法。為數組容量被固定的問題,不同的“鍵”可以產生不同的下標。也就是說,可能會有沖突。因此數字多大就不重要了,每個“鍵”總能在數組中找到他的位置。


免責聲明!

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



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