1. 程式人生 > >HashMap為什麽比數組查詢快

HashMap為什麽比數組查詢快

數組 位置 函數 散列碼 hashmap 應該 shm 不同 所有

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

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

HashMap為什麽比數組查詢快