gpt4 book ai didi

java - 哈希表的负载因子和容量

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:55:05 26 4
gpt4 key购买 nike

当哈希表中的条目数超过负载因子与当前容量的乘积时,如何增加容量?

最佳答案

这取决于底层实现。例如在 HashMap 中,底层存储是一个数组:

transient Entry[] table;

Entry 对象包含键和值。当容量不够时(正如你所说的正确,超过负载因子和当前容量的乘积),创建一个新数组并将旧值复制到其中。

参见 sourcecode of HashMap对于 OpenJdk 7 并查找 void resize(int newCapacity)。该方法中最重要的几行是:

Entry[] newTable = new Entry[newCapacity];   //create the new table
transfer(newTable); //transfer and rehash the data
table = newTable; //from now on use the new table
threshold = (int)(newCapacity * loadFactor); //compute the new threshold

threshold 是在再次增加大小之前可以包含的最大元素数。 transfer() 还会重新散列元素,因此与其原始位置相比,元素可能会存储在不同的数组索引中。您可以查看代码,阅读起来非常简单。

关于java - 哈希表的负载因子和容量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8186285/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com