欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

HashMap 的性能因子

程序员文章站 2022-03-08 18:44:51
...

参考目录:

1. HashMap 散列初体验
2. 为什么HashMap 常用String 对象作key
3. HashMap 原理
4.自定义 hashCode()
5.HashMap 的性能因子

在实际应用中,当HashMap 默认的查找速度与存储速度不能满足我们的需求时,我们可以通过手工调整HashMap 来提高性能,从而满足我们对特定应用的需求。在调整HashMap 之前有一些术语首先让我们共同了解一下。

  • 桶(bucket):表示实际散列表的数组。
  • 容量:表示桶中的位数
  • 初始容量:表在创建时所拥有的桶位数。HashMap 与 HashSet 都允许你在初始化的时候指定初始容量的大小
  • 尺寸:表示当前存储的项数
  • 负载因子:尺寸/容量。空表的负载因子是0,半满表的负载因子是0.5,以此类推。负载轻的表产生冲突的可能性小,因此对于插入和查找都是最理想的状态(但是会减慢使用迭代器遍历的过程)。HashMap 与HashSet 都允许指定负载因子的构造器,表示当负载情况达到该负载因子的水平时,容器将会自动扩容(增加桶位数),实现方式时使容量大致加倍,并重新将现有对象分布到新的桶位集中(这个过程被称为再散列)

HashMap 使用的默认的负载因子是0.75(也就是当表达到四分之三容量时,就进行散列),这个因子在时间和空间的代价之间达到了平衡。更高的负载因子可以降低表的空间,但是会增加查找代价,这样做是很忌讳的,因为在HashMap 中我们一般做的就是查询与插入操作。

下面是HashMap 的构造函数:

HashMap() 
          构造一个具有默认初始容量 (16) 和默认加载因子 (0.75) 的空 HashMap。
HashMap(int initialCapacity) 
          构造一个带指定初始容量和默认加载因子 (0.75) 的空 HashMap。
HashMap(int initialCapacity, float loadFactor) 
          构造一个带指定初始容量和加载因子的空 HashMap。
HashMap(Map<? extends K,? extends V> m) 
         构造一个映射关系与指定 Map 相同的新 HashMap。

在初始化的时候HashMap 允许我们创建指定大小容量与负载因子的map 以满足我们对特定的需求。

相关标签: HashMap性能因