如何获得 Java Hashtable 的内部数组表示?我知道哈希表只是巧妙组织的数组,我想使用每个键的索引,这样我就可以与不相交集并行工作。
我需要两件事之一:
- 用于将我的键转换为哈希表内部数组中的索引的哈希函数
- 键的对应索引。
如何获得 Java Hashtable 的内部数组表示?我知道哈希表只是巧妙组织的数组,我想使用每个键的索引,这样我就可以与不相交集并行工作。
我需要两件事之一:
注意 1:在 90% 的情况下,您可能应该使用HashMap
类而不是Hashtable
.
注意 2:实际上大多数哈希表将列表与数组结合起来,以处理哈希冲突。
通常,您不应该能够接触到 Java 实现附带的类的内部。这将破坏 Java 提供清晰分离接口和实现的能力的全部目的。
相反,我建议您创建一个新类,例如通过从 Java 开发工具包MyHashMap
中复制实现的源代码。HashMap
通过拥有自己的副本,您拥有完全的控制权,并且在 JRE 更新后您不会受到意外损坏。您可以在此处找到 OpenJDKHashMap
实现。
PS:理论上你可以HashMap
尝试使用反射访问内部,但生成的代码会很糟糕,性能更差......
我相信您可以通过反射访问任何字段,只需查看 Hashtable 内部结构。
或者您只是在寻找代码示例?
创建一个类似哈希表的类,按字母顺序将索引分配给键。出于您的目的,扩展 HashMap 或类似的东西可能甚至没有必要。应该会很好玩。