【发布时间】:2015-09-08 08:05:02
【问题描述】:
正如我们许多人所知,最初HashMap 分配的内存默认初始容量为 16,默认加载因子为 0.75。现在,当我们尝试将值存储到HashMapfirst 时,它通过在哈希映射键上调用哈希码函数来计算存储桶位置。假设如果用户定义的hashcode方法返回一个大于整数范围的值并且该值超出HashMap的初始容量地址,那么该值将如何存储在HashMap中?
或
由于 hashcode 方法可以返回整数范围内的任何值,那么 JVM 怎么知道它必须将哈希映射值存储在最初分配的内存位置?
【问题讨论】:
-
由于 hashcode 方法可以返回整数范围内的任何值,那么 JVM 如何知道它必须在最初分配的内存位置存储哈希映射值?例如,当我们创建哈希映射时,它会创建一个大小为 16 个插槽的数组。当我们尝试将值存储到哈希映射时,它会存储在这个数组中。所以 JVM 如何知道它必须存储在这个数组中,因为哈希码函数可以返回地址值大于数组地址大小。
-
你的问题写得很混乱。