将float loadfactor用于HashSet有什么影响?

时间:2011-10-15 05:57:16

标签: java

为什么float loadfactor会影响HashSet?有什么意义呢?

2 个答案:

答案 0 :(得分:7)

您需要阅读JavaDoc for HashMap中包含的解释

  

负载系数衡量哈希表在其容量自动增加之前可以获得多长时间。

http://download.oracle.com/javase/6/docs/api/java/util/HashMap.html

答案 1 :(得分:0)

HashMap的实例具有两个影响其性能的参数:

initial capacityload factor

容量是哈希表中存储桶的数量,initial capacity只是哈希表创建时的容量。 load factor衡量散列表的容量在自动增加之前允许达到的满度。当哈希表中的条目数超过负载因子和当前容量的乘积时,哈希表将被重新哈希(即,内部数据结构将被重建),因此哈希表的存储桶数大约为两倍。 / p>

通常,default load factor(.75)在时间和空间成本之间提供了一个很好的权衡。较高的值会减少空间开销,但会增加查找成本(在HashMap类的大多数操作中都得到体现,包括getput)。设置其初始容量时,应考虑映射中的预期条目数及其负载因子,以最大程度地减少重新哈希操作的次数。如果initial capacity大于条目的最大数量除以负载因子,则将不会进行任何哈希操作。

即如果

load factor x capacity > number of entries

然后再哈希就不会发生。

如果要在HashMap实例中存储许多映射,则创建具有足够大容量的映射将比让其根据需要增长表的自动重新哈希处理更有效地存储映射。