gpt4 book ai didi

java - Hashmap 哈希表大小限制小于数组索引允许的最大限制

转载 作者:行者123 更新时间:2023-12-02 03:59:16 25 4
gpt4 key购买 nike

我只是想验证我的以下理解,所以请提出建议。

在 Java 中,常规数组的索引最大可达 int类型为2 raised to power 31 minus -1HashMap以来MAXIMUM_CAPACITYint同样,它也可以达到该值。

但是自从 HashMap内部需要表长度(桶大小)为 power of two因此限制被缩减为 - static final int MAXIMUM_CAPACITY = 1 << 30;因为该值为 nearest power of two1<<31 -1

我的理解正确吗?

所有答案here仅提及符号位限制,但未提及 power of two要求,

/**
* The table, resized as necessary. Length MUST Always be a power of two.
*/

transient Entry<K,V>[] table = (Entry<K,V>[]) EMPTY_TABLE;

此外,我了解 array 的大小限制或Hashmap (桶大小)与system / object / heap memory无关限制,但 max_range 为 int仅数据类型(索引数据类型)和其他逻辑要求(如 2 的幂等)。

最佳答案

您 ( more or less ) 关于数组大小的推理是正确的。

但是内部数组HashMap.table的大小限制并不会限制HashMap的大小(即HashMap中可以存储的条目数)。

该数组中的每个元素实际上是无限大小的 Entry 对象的链接列表,因此对可以存储在 HashMap 中的条目数量没有硬性限制。

关于java - Hashmap 哈希表大小限制小于数组索引允许的最大限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35082280/

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