java - hashmap如何确保每个哈希值在哈希表中分配唯一的索引

标签 java collections hashmap

我想了解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/

相关文章:

java - 通过构造函数传递值的最佳实践 - JAVA

asp.net-mvc - ASP.Net MVC 2 中列表的客户端验证

Java:如何将 String[] 转换为 List 或 Set

java - 是否有可能拥有 native android 代码?

java - 如何初始化一个public static final read-only Linked Map(双向图)

javascript - Backbone Marionette 集合过滤

java - hashmap 在调用 containsKey() 时检查什么?

java - 使用 HashMaps Java

java - 如何解释 Java Hashmap 中的重复条目?

java - 如何使数组的大小成为 for 循环返回的结果?