HashMap为什么比数组查询快

Posted xiemingjun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HashMap为什么比数组查询快相关的知识,希望对你有一定的参考价值。

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

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

以上是关于HashMap为什么比数组查询快的主要内容,如果未能解决你的问题,请参考以下文章

HashMap1.8

MySQL中MyISAM为什么比InnoDB查询快

为啥创建 HashMap 比创建 Object[] 更快?

Java集合 -- HashMap底层实现HashMap 的长度为什么是2的幂次方ConcurrentHashMap 和 HashtableConcurrentHashMap线程安全的实现

HashMap

查询与查询 - 为啥这个比另一个快?