3

如何获得 Java Hashtable 的内部数组表示?我知道哈希表只是巧妙组织的数组,我想使用每个键的索引,这样我就可以与不相交集并行工作。

我需要两件事之一:

  1. 用于将我的键转换为哈希表内部数组中的索引的哈希函数
  2. 键的对应索引。
4

3 回答 3

4

注意 1:在 90% 的情况下,您可能应该使用HashMap类而不是Hashtable.

注意 2:实际上大多数哈希表将列表与数组结合起来,以处理哈希冲突。

通常,您应该能够接触到 Java 实现附带的类的内部。这将破坏 Java 提供清晰分离接口和实现的能力的全部目的。

相反,我建议您创建一个新类,例如通过从 Java 开发工具包MyHashMap中复制实现的源代码。HashMap通过拥有自己的副本,您拥有完全的控制权,并且在 JRE 更新后您不会受到意外损坏。您可以在此处找到 OpenJDKHashMap实现。

PS:理论上你可以HashMap尝试使用反射访问内部,但生成的代码会很糟糕,性能更差......

于 2012-11-21T20:28:14.130 回答
0

我相信您可以通过反射访问任何字段,只需查看 Hashtable 内部结构。

或者您只是在寻找代码示例?

于 2012-11-21T20:28:30.480 回答
0

创建一个类似哈希表的类,按字母顺序将索引分配给键。出于您的目的,扩展 HashMap 或类似的东西可能甚至没有必要。应该会很好玩。

于 2012-11-21T20:31:11.847 回答