码迷,mamicode.com
首页 > 编程语言 > 详细

HashMap为什么比数组查询快

时间:2018-09-19 20:02:44      阅读:452      评论:0      收藏:0      [点我收藏+]

标签:shm   为什么   产生   list   函数   原因   equal   数组   应该   

  通常数组不直接保存值,而是通过保存值的list。然后对list中的“值”使用equals方法比较,这部分查询速度自然慢。但是如果有好的散列函数,数组的每个位置就只有较少的“值”。因此,不是查询所有的list,而是快速跳到数组的某个位置,只对很少的额元素进行比较,这就是HashMap会如此之快的原因。

  这里解释一下数组的“键”,数组并不保存键本身,而是通过“键”对象生成一个数字,将其作为数组的下标索引。这个数字就是散列码,有定义在Object中的hashcode生成(也称散列函数)。你的类总是应该重载hashCode方法。为数组容量被固定的问题,不同的“键”可以产生不同的下标。也就是说,可能会有冲突。因此数字多大就不重要了,每个“键”总能在数组中找到他的位置。

HashMap为什么比数组查询快

标签:shm   为什么   产生   list   函数   原因   equal   数组   应该   

原文地址:https://www.cnblogs.com/xiemingjun/p/9675930.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!