如何到达 Java 哈希表的内部数组表示形式?我知道哈希表只是巧妙组织的数组,我想使用每个键的索引,这样我就可以与不相交集并行工作。
我需要以下两件事之一:
- 用于将我的键转换为哈希表内部数组中的索引的哈希函数
- key对应的index。
最佳答案
注意 1:在 90% 的情况下,您可能应该使用 HashMap
类而不是 Hashtable
.
注意 2:实际上,大多数哈希表将 列表 与数组结合在一起,以处理哈希冲突。
一般来说,您不应该能够接触到 Java 实现附带的类的内部结构。这将破坏 Java 提供接口(interface)和实现之间清晰分离的能力的全部目的。
相反,我建议您创建一个新类,例如MyHashMap
从您的 Java 开发工具包中复制 HashMap
实现的源代码。通过拥有自己的副本,您可以完全控制 JRE 更新后不会出现意外损坏。您可以找到 OpenJDK HashMap
实现 here .
PS:理论上您可以尝试使用反射访问HashMap
内部,但生成的代码将残暴并且性能更差。 ..
关于java - 哈希表内部索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13501261/