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

Java Hashmap哈希表大小限制小于数组索引允许的最大限制,java,collections,Java,Collections,我只是想验证我下面的理解,所以请提出建议 在Java中,正则数组的索引可以达到int类型的最大值,该类型的2的幂为31减-1,并且由于HashMap的最大容量也是int,所以它也可以达到该值 但由于HashMap内部需要表长度(bucket size)为的二次幂,因此限制被缩减为-静态最终int max_CAPACITY=1您关于数组大小的推理是()正确的 但是内部数组HashMap.table上的大小限制并不限制HashMap的大小(即可以存储在HashMap中的数字条目) 该数组中的每个元素

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

在Java中,正则数组的索引可以达到
int
类型的最大值,该类型的
2的幂为31减-1
,并且由于
HashMap
的最大容量也是
int
,所以它也可以达到该值

但由于
HashMap
内部需要表长度(bucket size)为
的二次幂
,因此限制被缩减为-
静态最终int max_CAPACITY=1您关于数组大小的推理是()正确的

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

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

关于数组大小的推理是()正确的

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


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

数组的限制是2^^30,因为这是一个数组的最大二次幂。但是,没有理由认为哈希映射被限制在这个大小,而是在这一点上,哈希映射退化为链表的哈希(或Java8中的树)也就是说,每个bucket中的条目数没有限制。

数组的限制是2^30,因为这是一个数组的最大二次幂。但是,没有理由建议将哈希映射限制为该大小,而是在这一点上,哈希映射降级为链表(或Java 8中的树)的哈希,即每个bucket中的条目数没有限制

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

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