2012-11-21 76 views
3

如何才能到达Java Hashtable的内部数组表示形式?我知道散列表只是巧妙组织的数组,我想使用每个键的索引,所以我可以并行处理Disjoint集合。散列表内部索引

我需要两件事情之一:

  1. 用于打开我的钥匙入索引的散列表
  2. 的键的相应索引的内部阵列中的哈希函数。
+0

我想如果你需要这样的东西,你最好使用你自己的哈希表实现。或从某处复制现有的并使用它。因为如果你使用一些第三方或标准类,那么它的内部实现将会改变,你的程序会崩溃。 –

+0

好的,我只是很忙,希望能够重写我的一个哈希表。无论如何感谢所有人。 –

回答

4

注意1:在90%的情况下,您应该使用HashMap类而不是Hashtable。注2:实际上,大多数散列表将列表与一个数组组合在一起,以便处理散列冲突。

一般而言,你是而不是应该能够达到Java实现的类的内部。这将破坏Java的全部目的,提供界面和实现之间明确分离的能力。

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

PS:你可能理论上尝试使用反射访问HashMap内部,但由此产生的代码将是残暴和性能更差......

+0

hashmaps有什么好处?我只是没有了解他们。 –

+0

@BenKellman:在内部,两个类非常相似 - 主要的区别是'Hashtable'是同步的,这通常意味着一个相当不必要的开销。它也比较老,这意味着它的接口相对来说比较杂乱,不再使用新类的接口。 – thkala

0

我相信你可以使用反射来访问任何字段只看看Hashtable的内部。

或者你只是寻找代码示例?

0

创建一个类似散列表的类,它按字母顺序将索引分配给键。扩展HashMap或类似的东西对你来说可能不是必需的。应该会很好玩。