我想了解HashMap的hash()和indexOf()方法如何将哈希表中的唯一索引分配给 HashMap 。换句话说,为什么多个哈希值不可能映射到同一个索引。
最佳答案
在HashMap
中,底层存储桶数组大小是在初始化时设置的,并且可以相应地调整大小 - 项目的存储桶索引(在indexFor
中)由生成>key.hashCode() % (table.length - 1)
。
how does hashmap ensure that each hash value is assigned a unique index in the hash table
不必是唯一的(见下文)
why it is not possible for multiple hash values to be mapped to the same index
这是可能的 - 可以将多个条目
(键/值对)映射到单个存储桶
。正确的哈希表实现通过让每个bucket
能够容纳多个Entry
来克服这个问题。 HashMap
特别使用链表 - 如果某个项目映射到已占用的存储桶
,则该项目将添加到存储桶链表的开头。
关于java - hashmap如何确保每个哈希值在哈希表中分配唯一的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30626995/