一文读懂HashMap和HashTable的区别以及常见面试题( 三 )


\n

在这里提到了两个参数:初始容量 , 加载因子 。

\n

这两个参数是影响HashMap性能的重要参数 , 其中容量表示哈希表中桶的数量 , 初始容量是创建哈希表时的容量 , 加载因子是哈希表在其容量自动增加之前可以达到多满的一种尺度 , 它衡量的是一个散列表的空间的使用程度 , 负载因子越大表示散列表的装填程度越高 , 反之愈小 。

\n

对于使用链表法的散列表来说 , 查找一个元素的平均时间是O(1+a) , 因此如果负载因子越大 , 对空间的利用更充分 , 然而后果是查找效率的降低;如果负载因子太小 , 那么散列表的数据将过于稀疏 , 对空间造成严重浪费 。 系统默认负载因子为0.75 , 一般情况下我们是无需修改的 。

\n

HashMap是一种支持快速存取的数据结构 , 要了解它的性能必须要了解它的数据结构 。

\n

数据结构

\n

我们知道在Java中最常用的两种结构是数组和模拟指针(引用) , 几乎所有的数据结构都可以利用这两种来组合实现 , HashMap也是如此 。 实际上HashMap是一个“链表散列” , 如下是它的数据结构:

推荐阅读