Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的hashmap应该有多大?_Java_Data Structures_Hashtable - Fatal编程技术网

Java 我的hashmap应该有多大?

Java 我的hashmap应该有多大?,java,data-structures,hashtable,Java,Data Structures,Hashtable,我不知道我的Hashmap中会存储多少元素。那么我的HashMap的容量应该有多大呢?在这里我应该考虑哪些因素?我希望尽可能减少重新灰化过程,因为它非常昂贵。您希望在空间需求和速度之间进行良好的权衡,如果发生多次碰撞,速度会降低,如果减少空间分配,速度会降低 您可以定义一个负载系数,默认值可能很好 但您还希望避免的是,随着哈希表的增长,必须重建和扩展哈希表。因此,您需要预先以最大容量调整它的大小。不幸的是,对于这一点,你需要大致知道你将投入多少 如果你能负担得起浪费一点内存,并且至少有一个合理的

我不知道我的Hashmap中会存储多少元素。那么我的HashMap的容量应该有多大呢?在这里我应该考虑哪些因素?我希望尽可能减少重新灰化过程,因为它非常昂贵。

您希望在空间需求和速度之间进行良好的权衡,如果发生多次碰撞,速度会降低,如果减少空间分配,速度会降低

您可以定义一个负载系数,默认值可能很好

但您还希望避免的是,随着哈希表的增长,必须重建和扩展哈希表。因此,您需要预先以最大容量调整它的大小。不幸的是,对于这一点,你需要大致知道你将投入多少

如果你能负担得起浪费一点内存,并且至少有一个合理的上限来限制它的大小,那么你可以使用它作为初始容量。如果你保持在这个容量之下,它将永远不会再出现。内存需求与容量成线性关系,可能有人有数字。请记住,默认负载系数为0.75时,您需要将容量设置为略高于元素数,因为它将在表已满75%时扩展表

如果你真的不知道,就使用默认值。不是因为它们在你的情况下是完美的,而是因为你没有任何替代设置的基础


好消息是,即使您设置了次优值,它仍然可以正常工作,只是浪费了一点内存和/或CPU周期。

您希望在空间需求和速度之间有一个良好的折衷,如果发生多次冲突,这一点会降低,如果减少空间分配,这种折衷的可能性会更大

您可以定义一个负载系数,默认值可能很好

但您还希望避免的是,随着哈希表的增长,必须重建和扩展哈希表。因此,您需要预先以最大容量调整它的大小。不幸的是,对于这一点,你需要大致知道你将投入多少

如果你能负担得起浪费一点内存,并且至少有一个合理的上限来限制它的大小,那么你可以使用它作为初始容量。如果你保持在这个容量之下,它将永远不会再出现。内存需求与容量成线性关系,可能有人有数字。请记住,默认负载系数为0.75时,您需要将容量设置为略高于元素数,因为它将在表已满75%时扩展表

如果你真的不知道,就使用默认值。不是因为它们在你的情况下是完美的,而是因为你没有任何替代设置的基础


好消息是,即使设置了次优值,它仍然可以正常工作,只是浪费了一点内存和/或CPU周期。

提供了做出合理决策所需的最少信息。阅读介绍。我不知道您应该考虑哪些因素,因为您没有提供有关应用程序性质、预期负载等的详细信息,。。。在这一阶段,我的最佳建议是,让它保持默认值16,然后进行负载测试,从用户的角度考虑应用程序,您将能够大致计算出最初需要的容量。

提供了做出合理决策所需的最低信息。阅读介绍。我不知道您应该考虑哪些因素,因为您没有提供有关应用程序性质、预期负载等的详细信息,。。。在这一阶段,我的最佳建议是,让它保持默认值16,然后进行负载测试,从用户的角度考虑应用程序,您将能够大致计算出最初需要多少容量。

loadfactor=1意味着什么?@Geek这意味着地图在满之前不会调整大小。如果loadfactor=0.75默认值,则当映射已满75%时,将调整映射的大小。loadfactor=1表示如果您有容量X,则在调整大小之前,它将在hashmap中放入X个元素。这里很拥挤,会有碰撞。默认值是0.75,我相信。负载系数是容器大小和容量之间的最大比率。这意味着当达到负载系数时,需要增加容量。1是最大可能值,表示只有在无法添加更多对象时才能增加容量。full是相对值。我想你可以把载荷系数设为2。。。每个bucket都是一个开放式列表loadfactor=1意味着什么?@Geek它意味着地图在满之前不会调整大小。如果loadfactor=0.75默认值,则当映射已满75%时,将调整映射的大小。loadfactor=1表示如果您有容量X,则在调整大小之前,它将在hashmap中放入X个元素。这里很拥挤,会有碰撞。默认值是0.75,我相信。负载系数是容器大小和容量之间的最大比率。也就是说当你到达负载fac时
你需要增加容量。1是最大可能值,表示只有在无法添加更多对象时才能增加容量。full是相对值。我想你可以把载荷系数设为2。。。每个桶都是一个开放的列表